X-Plugins框架使用

来源:互联网 发布:马刺热火第六场数据 编辑:程序博客网 时间:2024/06/09 21:49

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 // 获取当前应用版本号key2.VERSION_NAME // 获取当前应用版本名称key3.getAppName(Context); // 获取应用程序名称4.getVersionName(Context); // 获取版本信息,返回值为HashMap<String,Object>,可以通过VERSION_CODE,VERSION_NAME获取对应的值5.add(Activity); // 统计已经启动的activity6.finish(Activity); // 销毁指定的activity7.finish(Class); // 销毁指定的activity,Class必须为Activity及其子类8.finishAllActivity(); // 销毁所有activity9.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:图片加载listener11.display(String,ImageView,DisplayImageOptions,XImageLoadingListener);//显示网络图片,String:图片url,ImageView:图片显示控件,DisplayImageOptions:显示参数,XImageLoadingListener:图片加载listener12.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);// 默认返回015.public static long getLong(String key);// 默认返回0l16.public static float getFloat(String key);// 默认返回0f17.public static boolean getBoolean(String key);// 默认返回false18.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.xxx4.setLeftText(String text);//左边文字5.setLeftTextColor(String textColor);// 左边文字颜色,格式:#ffffff6.setLeftTextColor(int textColor);// 左边文字颜色,格式:R.color.xxx7.setLeftTextSize(float textSize);// 左边文字大小8.setRightText(int text);// 右边文字,格式:R.string.xxx9.setRightText(String text);// 右边文字10.setRightTextColor(String textColor);//右边文字颜色,格式:#ffffff11.setRightTextColor(int textColor);//右边文字颜色,格式:R.color.xxx12.setRightTextSize(float textSize);// 右边文字大小13.setTitleText(int text);// 标题文字,格式:R.strng.xxx14.setTitleText(String text);//标题文字15.setTitleTextColor(String textColor);//标题文字颜色,格式:#ffffff16.setTitleTextColor(int textColor);//标题文字颜色,格式:R.color.xxx17.setTitleTextSize(float textSize);// 标题文字大小18.setLeftIcon(int icon);// 左边图标,int:资源id19.setRightIcon(int icon);// 右边图标,int:资源id20.setLeftView(int viewId);// 在文字和图标都不满足的情况下,可以自定义view进行添加21.setLeftView(View view);// 在文字和图标都不满足的情况下,可以自定义view进行添加22.setTitleView(int viewId);// 标题文字不满足情况下,可以自行添加view23.setTitleView(View view);// 标题文字不满足情况下,可以自行添加view24.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);// 左边点击事件,默认为返回finish37.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
1 0