X-Plugins框架使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QQ243223991/article/details/53115478

X-Plugins

示例图片:
 
 
 
 
X-Plugins是集众多控件以及工具于一身的快速开发框架类,目前拥有APP管理类,Crash日志统计类,XBase-xxx类,通用类,XImage类,XPrefrence类,XUmeng类
View控件类,XTop类,adapter类等,为开发者提供一个快速开发的环境,在此依赖包中,我们基于ImaageLoader,fastjson,友盟统计进行的开发,因此也有相应的aar引用
在使用过程中切勿重复引用此类包.一下为当前依赖工程中引用的包.
compile 'com.android.support:appcompat-v7:24.0.0'
compile files('libs/universal-image-loader-1.9.5.jar')
compile files('libs/fastjson-1.2.9.jar')
// 加载进度条
compile 'com.pnikosis:materialish-progress:1.7'
// 友盟统计
compile 'com.umeng.analytics:analytics:latest.integration'

 关于作者

博客:http://blog.csdn.net/qq243223991

Github地址:https://github.com/anqiansong/X-PluginsExample

使用方法

引用:compile 'com.android.anqiansong.x_plugins:x-plugs:1.0.13'

APP管理类

 
APP管理类目前包含XPP类,主要功能是处理activity,以及获取版本信息,退出管理等,一下为该类中的一些主要成员
1.VERSION_CODE // 获取当前应用版本号key
2.VERSION_NAME // 获取当前应用版本名称key
3.getAppName(Context); // 获取应用程序名称
4.getVersionName(Context); // 获取版本信息,返回值为HashMap<String,Object>,可以通过VERSION_CODE,VERSION_NAME获取对应的值
5.add(Activity); // 统计已经启动的activity
6.finish(Activity); // 销毁指定的activity
7.finish(Class); // 销毁指定的activity,Class必须为Activity及其子类
8.finishAllActivity(); // 销毁所有activity
9.exit(Context); // 退出程序应用,其实现过程如下:
public static void exit(Context context) {
  MobclickAgent.onKillProcess(context);// 友盟
  XImage.getInstance().clearCache();// 退出之前先清除图片缓存
  XImage.getInstance().destory();// 销毁ImageLoader
  finishAllActivity();
  System.exit(0);
}
 

XCrash,日志统计

 
在使用前必须初始化,建议在Application中进行初始化操作,具体成员如下:
1.getInstance();// 实例化
1.initWith(Context);// 初始化
使用如下:
public class XApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化错误日志
        XCrash.getInstance().initWith(this);
    }
}
在Application中进行初始化后即可对错误日志进行友盟统计,
注意:这里的日志统计需要结合友盟使用,需要设置自己平台对应的appkey,如果没有结合友盟统计,则默认为x-plugins作错误统计.关于友盟统计使用请查看后面详细内容.
 

XUmeng,友盟统计

 
主要功能为配合XCrash进行错误日志统计,具体成员如下:
1.getInstance();// 获取实例
2.initWith(Context,String,String,boolean);// Context:上下文,String:友盟appKey,String:渠道id,boolean:是否统计错误日志
3.reportError(Context,Throwable);

使用

1.初始化,建议在Application中初始化 XUmeng.getInstance().initWith(this, 你的appkey, 渠道id, true);// appkey需要在友盟申请,渠道id可以随便设置,这里默认打开错误统计 2.上报错误异常 try { gridView = (GridView) findViewById(R.id.gridView); adapter = new GridAdapter(); gridView.setAdapter(adapter); }catch (Exception e){   XUmeng.getInstance().repostError(mActivity,e);// 通过这行代码可以将错误日志统计到友盟 }  

XBaseActivity

 
XBaseActivity 对activity进行一个模块管理,用户可以继承此类进行重写里面的方法,这样的好处是对view,listener,data初始化进行了模块化划分
在此类中,还有对沉浸式状态栏进行了设置,以及activity的统计管理,如果继承此类后,不用对onCreate()进行重写,我们有另外的声明周期方法进行管理,
常用的方法如下:

必须重写的方法

  1.public abstract boolean immersiveStatusBar();// 是否沉浸式状态栏,true:支持沉浸式状态栏,false:不支持沉浸式状态栏 2.public abstract Activity initActivity();// 统计当前activity,默认为return null;这里需要return this; 3.public abstract int getLayoutId();// 设置布局id,用此方法来代替在onCreate()中setContentView()方法,因此不用重写onCreate()方法 4.public abstract void initView();// 初始化view,比如查找控件等 5.public abstract void initListener();// 相关事件生命周期 6.public abstract void initData();// 数据初始化

其他非必须重写方法

以下方法为非必须实现方法,可以在子类中需要使用的地方调用即可. 1.showToast(String);// 吐司 2.showToast(int);// 吐司 3.showLoadingDialog(int,String);// 显示带文字的加载框,int:文字颜色,String:加载时文字内容,如果为null,则不显示 4.showLoadingDialog();// 显示不带文字的加载匡 5.dismissLoadingDialog();// 隐藏加载匡

其他成员变量

1.XBaseActivity mActivity;// 可做Context在子类调用

使用

具体使用可以参考demo.  

XBaseFragment

 
XBaseFragment,一个Fragment管理类,你可以继承XBaseFragment来进行相关方法重写,这样的好处和XBaseActivity一样可以模块化代码,简洁开发

必须重写方法

  1.public abstract boolean immersiveStatusBar();// 是否沉浸式状态栏,true:支持沉浸式状态栏,false:不支持沉浸式状态栏 2.public abstract Activity initActivity();// 统计当前activity,默认为return null;这里需要return this; 3.public abstract int getLayoutId();// 设置布局id,用此方法来代替在onCreate()中setContentView()方法,因此不用重写onCreate()方法 4.public abstract void initView();// 初始化view,比如查找控件等 5.public abstract void initListener();// 相关事件生命周期 6.public abstract void initData();// 数据初始化

其他方法

如果想要使用XBaseActivity中的其他方法,只需要通过mActivity.xxx调用即可,如调用XBaseActivity中吐司: mActivity.showToast("这是一个吐司测试"); 更多使用可以参考demo  

XImage

 
XImage,基于ImageLoader进行封装的图片请求类,减轻繁琐的配置,用户只需要一行代码初始化后就可以使用,同时也保留了ImageLoader的一切方法
具体成员如下:
1.getInstance();// 实例化
2.init(Context,String);//Context:上下文,String:文件缓存路径,为null时默认为XImage/Cache路径下,初始化,建议在Application中初始化,使用如:
 XImage.getInstance().init(this, "XImage/app/cache");
3.setDefaultDrawable(int,int,int);// 设置默认图片,int:加载时默认图片,int:url为空时默认图片,int:加载失败时默认图片,如果不调用则使用默认配置
4.setDisplayImageOptions(DisplayImageOptions);// 显示参数,也可以像ImageLoader一样自己设置参数后进行设置
5.displayFile(String,ImageView);// 显示SD卡图片文件,String:待显示的图片文件路径,ImageView:图片显示控件,格式:"file:///mnt/sdcard/image.png",视频"file:///mnt/sdcard/video.mp4"
6.displayDrawable(int,ImageView);// 显示drawable资源文件,int:资源id,ImageView:图片显示控件,格式:drawable://" + R.drawable.img 
7.dislayAssets(String,ImageView);// 显示Assets中的图片,String:文件名称,ImageView:图片显示控件
8.display(String,ImageView);// 显示网络图片,String:图片url,ImageView:图片显示控件
9.display(String,ImageView,DisplayImageOptions);//显示网络图片,String:图片url,ImageView:图片显示控件,DisplayImageOptions:显示参数
10.display(String,ImageView,XImageLoadingListener);//显示网络图片,String:图片url,ImageView:图片显示控件,XImageLoadingListener:图片加载listener
11.display(String,ImageView,DisplayImageOptions,XImageLoadingListener);//显示网络图片,String:图片url,ImageView:图片显示控件,DisplayImageOptions:显示参数,XImageLoadingListener:图片加载listener
12.display(String, ImageView, XImageLoadingListener, XImageLoadingProgressListener)//显示网络图片,String:图片url,ImageView:图片显示控件,XImageLoadingListener:图片加载listener,XImageLoadingProgressListener:图片加载进度
13.display(String, ImageView, DisplayImageOptions,XImageLoadingListener, XImageLoadingProgressListener)//显示网络图片,String:图片url,ImageView:图片显示控件,DisplayImageOptions:显示参数,XImageLoadingListener:图片加载listener,XImageLoadingProgressListener:图片加载进度
14.loadImage(String,XImageLoadingListener);// 加载图片,String:图片地址,XImageLoadingListener:加载监听
15.loadImage(String,DisplayImageOptions,XImageLoadingListener);// 加载图片,String:图片地址,DisplayImageOptions:显示参数,XImageLoadingListener:加载监听
16.loadImageSync(String);//同步加载图片,String:图片地址
17.loadImageSync(String,DisplayImageOptions);// 同步加载图片
18.resume();
19.pause();
20.stop();
21.clearCache();//清除所有缓存
22.clearDiskCache();// 清除文件缓存
23.clearMemoryCache();//清除内存缓存
 

XPrefrence

 
XPrefrence,基于SharePrefrence实现的存储工具类,除了能够存储基本数据类型以外,还可以存储实体类,具体详细成员如下:
1.public static void init(Context context, String prefrenceName);// 初始化,建议在Application中初始化
2.public static void putString(String key, String value);
3.public static void putInt(String key, int value);
4.public static void putLong(String key, long value);
5.public static void putFloat(String key, float value);
6.public static void putBoolean(String key, boolean value);
7.public static void putObject(Object object);// 保存实体类
8.public static String getString(String key, String defValue);
9.public static int getInt(String key, int defValue);
10.public static float getFloat(String key, float defValue);
11.public static boolean getBoolean(String key, boolean defValue);
12.public static long getLong(String key, long defValue);
13.public static String getString(String key);// 默认返回""
14.public static int getInt(String key);// 默认返回0
15.public static long getLong(String key);// 默认返回0l
16.public static float getFloat(String key);// 默认返回0f
17.public static boolean getBoolean(String key);// 默认返回false
18.public static <T> T getObject(Class t);// 获取实体类,会抛出解析异常,t为待获取实体类的Class文件
19.clear();// 缓存清除

Dialog

XchoiceDialog,选择对话框,使用案例:
 XChoiceDialog XChoiceDialog = new XChoiceDialog(this, getResources().getColor(R.color.color_deep_pink), "标题", "是否定位到当前城市[上海]?", null, null);
XChoiceDialog.show();
更多案例可查看源码说明
XOkDialog,确认对话框,使用案例
XOkDialog XOkDialog = new XOkDialog(this, getResources().getColor(R.color.color_deep_pink), title, "定位成功!", null, null);
XOkDialog.show();
//更多案例请查看源码说明
XHeadPicker,相册/拍照选择框
XHeadPicker headPicker = new XHeadPicker(this, theme, new XHeadPicker.OnHeadPickListener() {
  @Override
  public void headPicked(int position) {
    switch (position) {
      case XHeadPicker.ALBUM:
           showToast("相册");
            break;
      case XHeadPicker.CAMERA:
           showToast("拍照");
            break;
      case XHeadPicker.CANCEL:
            showToast("取消");
            break;
  }
});
Window dialogWindow = headPicker.getWindow();
dialogWindow.setWindowAnimations(com.android.anqiansong.x_plugs.R.style.dialog_animation);
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
lp.width = getResources().getDisplayMetrics().widthPixels;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
dialogWindow.setGravity(Gravity.BOTTOM);
dialogWindow.setAttributes(lp);
headPicker.show();
XFunctionsDialog,多功能对话框
一款选择对话框,确认对话框于一体的多功能对话框,可以单独设置按钮文字,标题文字,消息体文字,消息体view,以及对应文字的颜色等,更多使用请查看源码说明

XCircleImage

 
XCircleImage,圆形头像显示控件,具体成员
1.XCircleImage(Context context);//构造方法
2.XCircleImage(Context context, AttributeSet attrs);//构造方法
3.setBoderColor(int color);// 设置边缘颜色
4.setBoderWidth(int width);// 设置边缘宽度
xml中使用

具体属性:
xcircleBoderThickness:边缘宽度
xcircleBoderColor:边缘颜色
 

XCircleProgress

 
XCircleProgress,圆形进度条,具体使用:

方法成员:
XCircleProgress(Context context);// 构造方法
XCircleProgress(Context context, AttributeSet attrs);//构造方法
setProgress(float progress);// 设置当前进度
setMax(float max);//设置总进度
setTextSize(float textSize);// 设置文字大小
setProgressColor(int firstProgressColor,int secondProgressColor);// 设置进度颜色
setProgressWith(int width);// 设置进度宽度
详细属性:
xcircleProgress:进度值
xcircleMaxProgress:总进度值
xcircleFirstProgressColor:第一进度条颜色(背景)
xcircleSecondProgressColor:第二进度条颜色
xcircleProgressTextSize:进度文字大小
xcircleProgressWidth:进度条宽度
xcircleTextVisiable:文字是否可见,true:可见,false:不可见
 

XTop

XTop,一个万能的标题栏,用户可以设置左边文字,图标,view,标题文字,view,右边文字,图标,view来实现相对通用的标题栏,此控件也支持根据用户需要改变
其高度,左右边距,背景色,文字大小,文字颜色,是否沉浸式状态栏等.具体成员:
1.public XTop(Context context);// 构造方法
2.XTop(Context context, AttributeSet attrs);//构造方法
3.setLeftText(int text);// 左边文字,格式:R.string.xxx
4.setLeftText(String text);//左边文字
5.setLeftTextColor(String textColor);// 左边文字颜色,格式:#ffffff
6.setLeftTextColor(int textColor);// 左边文字颜色,格式:R.color.xxx
7.setLeftTextSize(float textSize);// 左边文字大小
8.setRightText(int text);// 右边文字,格式:R.string.xxx
9.setRightText(String text);// 右边文字
10.setRightTextColor(String textColor);//右边文字颜色,格式:#ffffff
11.setRightTextColor(int textColor);//右边文字颜色,格式:R.color.xxx
12.setRightTextSize(float textSize);// 右边文字大小
13.setTitleText(int text);// 标题文字,格式:R.strng.xxx
14.setTitleText(String text);//标题文字
15.setTitleTextColor(String textColor);//标题文字颜色,格式:#ffffff
16.setTitleTextColor(int textColor);//标题文字颜色,格式:R.color.xxx
17.setTitleTextSize(float textSize);// 标题文字大小
18.setLeftIcon(int icon);// 左边图标,int:资源id
19.setRightIcon(int icon);// 右边图标,int:资源id
20.setLeftView(int viewId);// 在文字和图标都不满足的情况下,可以自定义view进行添加
21.setLeftView(View view);// 在文字和图标都不满足的情况下,可以自定义view进行添加
22.setTitleView(int viewId);// 标题文字不满足情况下,可以自行添加view
23.setTitleView(View view);// 标题文字不满足情况下,可以自行添加view
24.setRightView(int viewId);// 在文字和图标都不满足的情况下,可以自定义view进行添加
25.setRightView(View view);// 在文字和图标都不满足的情况下,可以自定义view进行添加
26.setLeftIconMeasure(int width, int height);// 设置左边图标宽高度
27.setRightIconMeasure(int width, int height);// 设置右边图标宽高度
28.setLeftMargin(int margin);// 设置左边view边距
29.setRightMargin(int margin);// 设置右边view边距
30.setLeftIconVisibility(int visibility);// 设置左边图标是否可见,此需要建立在左边可见条件下
31.setLeftTextVisibility(int visibility);// 设置左边文字是否可见,此需要建立在左边可见条件下
32.setLeftVisibility(int visibility);// 设置左边是否可见
33.setRightIconVisibility(int visibility);// 设置右边图标是否可见,此需要建立在右边可见条件下
34.setRightTextVisibility(int visibility);// 设置右边文字是否可见,此需要建立在右边可见条件下
35.setRightVisibility(int visibility);// 设置右边是否可见
36.setLeftOnclickListener(OnClickListener clickListener);// 左边点击事件,默认为返回finish
37.immersiveStatusBar(boolean immersive);// 是否支持沉浸式状态栏,默认不支持
38.setRightOnclickListener(OnClickListener clickListener);// 右边点击事件
xml中使用:

属性大全:
leftIconVisibility:左边图标可见性
leftVisibility:左边可见性
rightVisibility:右边可见性
leftTextVisibility:左边文字可见性
rightIconVisibility:右边图标可见性
rightTextVisibility:右边文字可见性
leftText:左边文字
leftTextColor:左边文字颜色
leftTextSize:左边文字大小
leftIcon:左边图标
leftIconWidth:左边图标宽
leftIconHeight:左边图标高
leftMargin:左边距
rightText:右边文字
rightTextColor:右边文字颜色
rightTextSize:右边文字大小
rightIcon:右边图标
rightIconWidth:右边图标宽
rightIconHeight:右边图标高
rightMargin:右边距
titleText:标题文字
titleTextColor:标题文字颜色
titleTextSize:标题文字大小
immersiveStatusBar:是否沉浸式状态栏,true:是,false:否

XBaseAdapter

XBaseAdapter,简化了BaseAdapter,减少了部分重复工作,用户只要重写getview方法即可,在设置数据时通过setData(List<E> list)即可,如果是加载更多,则appendData(List<E> list)追加即可
使用案例:
public class ExampleAdapter extends XBaseAdapter<String>{// 这里需要指定泛型
  @Override
        public View getView(int position, View convertView, ViewGroup parent) {
          //TODO dosomething
        }
}
更多使用请查看源码

XFragmentPagerAdapter

XFragmentPagerAdapter 采用了软引用来进行管理,相对系统的FragmentPagerAdapter大大减少fragment的切换开销.用户只需要通过构造方法调用接口
成员:
1.XFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragments);
2.getFragment(int position);// 获取指定position的fragment

猜你喜欢

转载自blog.csdn.net/QQ243223991/article/details/53115478