XDroid
概述
XDroid是一个轻量级的Android快速开发框架,由UI、Cache、Event、ImageLoader、Kit、Log、Router、Net等几个部分组成。其设计思想是使用接口对各模块解耦规范化,不强依赖某些明确的三方类库,使得三方类库可自由搭配组装,方便替换。可快速、自由的进行App开发。
特性
XDroid主要有这些特性:
- 基于MVC,可快速切换到MVP
- 提供XActivity、XFragment、SimpleRecAdapter、SimpleListAdapter等基类,可快速进行开发
- 完整封装XRecyclerView,可实现绝大部分需求
- QTContentLayout、XRecyclerContentLayout实现loading、error、empty、content四种状态的自由切换
- 实现了Memory、Disk、SharedPreferences三种方式的缓存,可自由扩展
- 内置了EventBus,可自由切换到其他事件订阅库
- 内置Glide,可自由切换其他图片加载库
- 可输出漂亮的Log,支持Json、Xml、Throwable等,实现蝇量级
- 内置链式路由
- 内置常用工具类:package、random、file...,提供的都是非常常用的方法
- 内置加密工具类 XCodec,你想要的加密姿势都有
- 默认使用okhttputils作为api请求,可任性切换retrofit等其他库
- 引入三方库极少
Get Started
使用,仅需三步:
step1
clone 'XDroid'库到本地:
git clone https://github.com/limedroid/XDroid.git
step2
将library作为依赖库,在您的app module 中 添加如下依赖:
compile project(':library')
step3
修改'kit'包下的'XDroidConf'配置类,主要针对log、cache、router。若采用默认配置,此步骤可略过.
1 使用说明
1.1 UI规范
在UI层,主要对Activity、Fragment、RecyclerView、ListAdapter进行了封装。
1.1.1 XActivity
项目的Activity可直接继承XActivity,也可重新写一个基类Activity并让其继承XActivity,子类Activity必须实现这四个方法:
void initData(Bundle savedInstanceState); //初始化数据
void setListener(); //设置事件监听
int getLayoutId(); //设置布局资源文件id
boolean useEventBus(); //是否使用eventbus
这些类的定义在'UiCallback'接口中,若要进行修改,可直接修改此类。 XActivity中还实现了'UiDelegate',实现常用的公共方法,在子类中可直接使用。
可以将项目的showLoadingDialog()等常用方法添加进去,方便子类调用
1.1.2 XFragment
XFragment的实现与XActivity一致,为了方便的对Fragment和Activity进行切换,也就是只需要修改继承父类,就可改变Fragment&Activity的归属。其使用方法与XActivity是一致的。
1.1.3 UiDelegate
'UiDelegate'是一个接口,封装了一些常见的公共方法,供XActivity、XFragment的子类使用,其定义如下:
public interface UiDelegate {
void resume();
void pause();
void destory();
void visible(boolean flag, View view);
void gone(boolean flag, View view);
void inVisible(View view);
void toastShort(String msg);
void toastLong(String msg);
}
XDroid中内置了UiDelegateBase实现类。
1.1.4 XRecyclerView
XDroid集成了XRecyclerView,XRecyclerView有该库的详细说明。这里列举说明如下:
- XRecyclerView继承自RecyclerView,它就是一个封装了常见功能的RecyclerView,而不是继承FrameLayout
- XRecyclerView中实现了Header、Footer,header和Footer可以有多个
- XRecyclerView的每一个header、footer的viewType是不同的,而大部分开源库的header、footer的viewtype是相同的,其直接后果是界面卡顿
- XRecyclerView可以做出几乎任何的界面效果,可以取代ScrollView,你只需要使用header或者footer
- XRecyclerView中实现了上拉加载更多,可以自定义加载更多的效果,只需要实现LoadMoreUIHandler接口即可
- XRecyclerView并未实现下拉刷新功能,您可以选择SwipeRefreshLayout或者其他的下拉刷新viewGroup包裹,即 你可以自由选择下拉刷新功能的实现。
- 为了方便自定义使用,特别集成了XRecyclerContentLayout控件,你可以根据业务进行扩展,XRecyclerContentLayout只是一个示例,当然也可以满足绝大部分需求了
1.1.5 SimpleRecAdapter&SimpleListAdapter
SimpleRecAdapter是针对单ItemType场景对RecyclerView.Adapter的封装,只需要继承该类,实现三个方法即可:
F newViewHolder(View itemView); //创建viewholder
int getLayoutId(); //设置布局资源id
void onBindViewHolder(F holder, int position); //绑定数据和事件
若有多个ItemType,请继承RecyclerAdapter类,具体实现推荐看源码
SimpleListAdapter是针对单ItemType场景对ListAdapter的封装,继承该类,也需要实现三个方法:
H newViewHolder(View convertView); //创建viewholder
int getLayoutId(); //设置布局资源文件
void convert(H holder, T item, int position); //绑定数据和事件
若有多个ItemType,请继承XListAdapter类