Skip to content

Commit

Permalink
no message
Browse files Browse the repository at this point in the history
  • Loading branch information
youth5201314 committed Feb 24, 2017
1 parent f816312 commit 2f3f48b
Show file tree
Hide file tree
Showing 19 changed files with 306 additions and 27 deletions.
14 changes: 7 additions & 7 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
- [x] `XLoadingDialog`:简单实现加载等待对话框
- [x] `XPermission`:简化Android动态权限管理的操作
- [x] `XRecyclerViewAdapter`:一个用于RecyclerView Adapter的开发库,包含添加Header,Footer,加载更多,加载失败,加载到底和支持多种布局
* `XUpdateApp`:检测更新App,后台下载,应用自动安装
* `XRouter`:组件化路由框架
* `XCache`:缓存
* `XCrash`:异常崩溃统一管理
* `XTabPage`:Tab+Fragment快速实现
* `XWebView`:WebView UI与常见的功能封装
<!-- * `XUpdateApp`:检测更新App,后台下载,应用自动安装 -->
<!-- * `XRouter`:组件化路由框架 -->
<!-- * `XCache`:缓存 -->
<!-- * `XCrash`:异常崩溃统一管理 -->
<!-- * `XTabPage`:Tab+Fragment快速实现 -->
<!-- * `XWebView`:WebView UI与常见的功能封装 -->
- [x] `XStatusBar`:实现沉浸式状态栏
- [x] `XSplashView`:闪屏页或者广告页
- [x] `XToast`:简单的吐司使用
Expand All @@ -40,7 +40,7 @@
Gradle
```groovy
dependencies{
compile 'com.youth.xframe:xframe:1.0.0'
compile 'com.youth.xframe:xframe:1.0.1'
}
```
或者引用本地lib
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/com/youth/xf/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,7 @@ public class App extends XApplication {
public void onCreate() {
super.onCreate();
XFrame.initXLog();
XFrame.initXLoadingView()
.setErrorViewResId(R.layout._loading_layout_error);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import com.youth.xf.BaseActivity;
import com.youth.xf.R;
import com.youth.xframe.widget.XLoadingView;
import com.youth.xframe.widget.loadingview.XLoadingView;
import com.youth.xframe.widget.XToast;

public class XLoadingViewActivity extends BaseActivity {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import com.youth.xf.BaseActivity;
import com.youth.xf.R;
import com.youth.xframe.widget.XLoadingView;
import com.youth.xframe.widget.loadingview.XLoadingView;
import com.youth.xframe.widget.XToast;

public class XLoadingViewActivity2 extends BaseActivity {
Expand Down
39 changes: 39 additions & 0 deletions app/src/main/res/layout/_loading_layout_error.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="30dp">

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:src="@mipmap/error2" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="20dp"
android:text="失败了吧!!!!"
android:textColor="#666666"
android:textSize="16sp" />

<TextView
android:id="@id/xloading_retry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/xloading_btn_selector"
android:gravity="center"
android:minWidth="120dp"
android:padding="10dp"
android:text="加载失败,点击重试~~"
android:textColor="#999999"
android:textSize="16sp" />

</LinearLayout>
4 changes: 2 additions & 2 deletions app/src/main/res/layout/activity_xloading_view2.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<com.youth.xframe.widget.XLoadingView xmlns:android="http://schemas.android.com/apk/res/android"
<com.youth.xframe.widget.loadingview.XLoadingView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/xloading_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
Expand All @@ -9,4 +9,4 @@
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.youth.xframe.widget.XLoadingView>
</com.youth.xframe.widget.loadingview.XLoadingView>
4 changes: 2 additions & 2 deletions xframe/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

version = "1.0.0"
version = "1.0.1"


android {
Expand All @@ -12,7 +12,7 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionCode 2
versionName version
}
buildTypes {
Expand Down
19 changes: 15 additions & 4 deletions xframe/src/main/java/com/youth/xframe/XFrame.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,18 @@
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.util.DisplayMetrics;
import android.widget.ImageView;

import com.youth.xframe.base.XImageLoader;
import com.youth.xframe.utils.XDensityUtils;
import com.youth.xframe.utils.XOutdatedUtils;
import com.youth.xframe.utils.log.XLogConfig;
import com.youth.xframe.utils.log.XLog;
import com.youth.xframe.widget.loadingview.XLoadingView;
import com.youth.xframe.widget.loadingview.XLoadingViewConfig;

public class XFrame {
private static Context context;
Expand All @@ -40,16 +44,22 @@ public static XLogConfig initXLog() {
return XLog.init();
}

public static XLoadingViewConfig initXLoadingView() {
return XLoadingView.init();
}

public static void setImageLoader(XImageLoader imageLoader) {
XFrame.imageLoader=imageLoader;
}

public static void load(ImageView imageView, Object imageUrl) {
if (XFrame.imageLoader==null)
throw new NullPointerException("Call XFrame.setImageLoader(XImageLoader imageLoader) within your Application onCreate() method." +
"Or extends XApplication");
else
XFrame.imageLoader.load(XFrame.context,imageView,imageUrl);
}

public static Context getContext() {
synchronized (XFrame.class) {
if (XFrame.context == null)
Expand All @@ -72,10 +82,11 @@ public static AssetManager getAssets() {
}

public static Drawable getDrawable( @DrawableRes int id) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
return XFrame.getContext().getDrawable(id);
else
return XFrame.getResources().getDrawable(id);
return XOutdatedUtils.getDrawable(id);
}

public static int getColor( @ColorRes int id) {
return XOutdatedUtils.getColor(id);
}

public static Object getSystemService(String name){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.youth.xframe.entity;


import com.youth.xframe.common.NotObfuscateInterface;

/**
* 时间差计算结果封装类
*/
public class DateDifference {
public class DateDifference implements NotObfuscateInterface{
private long millisecond;
private long second;
private long minute;
Expand Down
1 change: 1 addition & 0 deletions xframe/src/main/java/com/youth/xframe/router/XRouter.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

/**
* 路由
* 目的:解耦,模块化开发时组件间通讯或者跳转
*/
public class XRouter {

Expand Down
12 changes: 12 additions & 0 deletions xframe/src/main/java/com/youth/xframe/utils/XOutdatedUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.view.View;
Expand Down Expand Up @@ -37,4 +38,15 @@ public static Drawable getDrawable(@DrawableRes int id) {
return XFrame.getResources().getDrawable(id);
}

/**
* getColor过时方法处理
* @param id
* @return
*/
public static int getColor(@ColorRes int id) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
return XFrame.getContext().getColor(id);
else
return XFrame.getResources().getColor(id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import com.youth.xframe.XFrame;


public class XLogConfig {

private boolean showThreadInfo = true;
Expand Down
138 changes: 138 additions & 0 deletions xframe/src/main/java/com/youth/xframe/widget/XRoundButton.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
package com.youth.xframe.widget;


import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.GradientDrawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.TextView;

import com.youth.xframe.R;
import com.youth.xframe.utils.XOutdatedUtils;


public final class XRoundButton extends TextView {

public XRoundButton(Context context) {
this(context, null);
}

public XRoundButton(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public XRoundButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.XRoundButton);

float pressedRatio = a.getFloat(R.styleable.XRoundButton_btnPressedRatio, 0.80f);
int cornerRadius = a.getLayoutDimension(R.styleable.XRoundButton_btnCornerRadius, 0);

ColorStateList solidColor = a.getColorStateList(R.styleable.XRoundButton_btnSolidColor);
int strokeColor = a.getColor(R.styleable.XRoundButton_btnStrokeColor, 0x0);
int strokeWidth = a.getDimensionPixelSize(R.styleable.XRoundButton_btnStrokeWidth, 0);
int strokeDashWidth = a.getDimensionPixelSize(R.styleable.XRoundButton_btnStrokeDashWidth, 0);
int strokeDashGap = a.getDimensionPixelSize(R.styleable.XRoundButton_btnStrokeDashGap, 0);

a.recycle();

setSingleLine(true);
setGravity(Gravity.CENTER);

RoundDrawable rd = new RoundDrawable(cornerRadius == -1);
rd.setCornerRadius(cornerRadius == -1 ? 0 : cornerRadius);
rd.setStroke(strokeWidth, strokeColor, strokeDashWidth, strokeDashGap);

if (solidColor == null) {
solidColor = ColorStateList.valueOf(0);
}
if (solidColor.isStateful()) {
rd.setSolidColors(solidColor);
} else if (pressedRatio > 0.0001f) {
rd.setSolidColors(csl(solidColor.getDefaultColor(), pressedRatio));
} else {
rd.setColor(solidColor.getDefaultColor());
}
XOutdatedUtils.setBackground(this,rd);
}

// 灰度
int greyer(int color) {
int blue = (color & 0x000000FF) >> 0;
int green = (color & 0x0000FF00) >> 8;
int red = (color & 0x00FF0000) >> 16;
int grey = Math.round(red * 0.299f + green * 0.587f + blue * 0.114f);
return Color.argb(0xff, grey, grey, grey);
}

// 明度
int darker(int color, float ratio) {
color = (color >> 24) == 0 ? 0x22808080 : color;
float[] hsv = new float[3];
Color.colorToHSV(color, hsv);
hsv[2] *= ratio;
return Color.HSVToColor(color >> 24, hsv);
}

ColorStateList csl(int normal, float ratio) {
// int disabled = greyer(normal);
int pressed = darker(normal, ratio);
int[][] states = new int[][]{{android.R.attr.state_pressed}, {}};
int[] colors = new int[]{pressed, normal};
return new ColorStateList(states, colors);
}

private static class RoundDrawable extends GradientDrawable {
private boolean mIsStadium = false;

private ColorStateList mSolidColors;
private int mFillColor;

public RoundDrawable(boolean isStadium) {
mIsStadium = isStadium;
}

public void setSolidColors(ColorStateList colors) {
mSolidColors = colors;
setColor(colors.getDefaultColor());
}

@Override
protected void onBoundsChange(Rect bounds) {
super.onBoundsChange(bounds);
if (mIsStadium) {
RectF rect = new RectF(getBounds());
setCornerRadius((rect.height() > rect.width() ? rect.width() : rect.height()) / 2);
}
}

@Override
public void setColor(int argb) {
mFillColor = argb;
super.setColor(argb);
}

@Override
protected boolean onStateChange(int[] stateSet) {
if (mSolidColors != null) {
final int newColor = mSolidColors.getColorForState(stateSet, 0);
if (mFillColor != newColor) {
setColor(newColor);
return true;
}
}
return false;
}

@Override
public boolean isStateful() {
return super.isStateful() || (mSolidColors != null && mSolidColors.isStateful());
}
}
}
Loading

0 comments on commit 2f3f48b

Please sign in to comment.