版权声明:本文为博主原创文章,未经博主允许不得转载。 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("这是一个吐司测试"); 更多使用可以参考demoXImage
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