XDroid 轻量级的Android快速开发框架
2016-12-08 10:58
120 查看
https://github.com/limedroid/XDroid/wiki
XDroid是一个轻量级的Android快速开发框架,由
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等其他库
引入三方库极少
使用,仅需三步:
clone '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[/code]将library作为依赖库,在您的app module 中 添加如下依赖:
step2compile project(':library')修改
step3kit包下的XDroidConf配置类,主要针对log、cache、router。若采用默认配置,此步骤可略过.
1
使用说明在UI层,主要对Activity、Fragment、RecyclerView、ListAdapter进行了封装。
1.1
UI规范项目的Activity可直接继承
1.1.1
XActivityXActivity,也可重新写一个基类Activity并让其继承XActivity,子类Activity必须实现这四个方法:void initData(Bundle savedInstanceState); //初始化数据 void setListener(); //设置事件监听 int getLayoutId(); //设置布局资源文件id boolean useEventBus(); //是否使用eventbus
这些类的定义在UiCallback接口中,若要进行修改,可直接修改此类。 XActivity中还实现了UiDelegate,实现常用的公共方法,在子类中可直接使用。
可以将项目的showLoadingDialog()等常用方法添加进去,方便子类调用XFragment的实现与XActivity一致,为了方便的对Fragment和Activity进行切换,也就是只需要修改继承父类,就可改变Fragment&Activity的归属。其使用方法与XActivity是一致的。
1.1.2
XFragment
1.1.3
UiDelegateUiDelegate是一个接口,封装了一些常见的公共方法,供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实现类。XDroid集成了XRecyclerView,XRecyclerView有该库的详细说明。这里列举说明如下:
1.1.4
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&SimpleListAdapterSimpleRecAdapter是针对单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类XDroid定义了
1.2
缓存ICache接口public interface ICache { void put(String key, Object value); //存 Object get(String key); //取 void remove(String key); //删除 boolean contains(String key); //检验是否存在 void clear(); //删除所有 }
并实现了DiskCache、MemoryCache,其内部分别借助DiskLruCache、LruCache实现。
1.2.1
SharedPreferencesSharedPref是对SharedPreferences的封装,包含了一系列的get&put方法、remove等。
推荐实践:创建一个新类,将键名作为常量,并封装对应的put&get静态方法,方便全局使用。如:public String getUserName(){ return getString(KEY.USER_NAME , null); }
可以在XDroidConf中配置缓存文件名称,默认是config
1.2.2
MemoryCacheMemoryCache内部采用LruCache实现,是ICache的实现类。
推荐实践:创建一个新类,将键名作为常量,并封装对应的put&get静态方法,方便全局使用。
1.2.3
DiskCacheDiskCache内部采用DiskLruCache实现,是文件缓存方式,其在基本缓存的基础上,增加了有效期,可以用于Api数据缓存。void put(String key, String value); void put(String key, String value, long expireMills); String get(String key); void remove(String key); boolean contains(String key); void clear();
实现了上述方法。
可以在XDroidConf中配置缓存目录名称,默认是cache自定义缓存只需要实现
1.2.4
自定义缓存ICache即可。事件订阅,对应包
1.3
事件订阅event
使用事件订阅,需要重写XActivity或者XFragment的useEventBus方法,当返回true时,表示使用事件订阅。@Override public boolean useEventBus() { return false; }
1.3.1
EventBus的使用XDroid中内置实现了EventBus,使用时只需要调用BusFactory.getBus().register(this);XActivity&XFragment已经有默认实现,无需额外调用。EventBus使用最新的3.0,去了解详情EventBus
需要说明的是: 事件类需要实现IEvent接口
事件发送:BusFactory.getBus().register(new MsgEvent());
MsgEvent implement IEvent自定义事件订阅只需要两步:
1.3.2
自定义事件订阅
step1
实现IBus接口,并实现其四个方法:@Override public void register(Object object) { } @Override public void unregister(Object object) { } @Override public void post(IEvent event) { } @Override public void postSticky(IEvent event) { }
step2
修改BusFactory类的实现,将EventBusImpl的实现方案替换成您自己的事件订阅方案。public static IBus getBus() { if (bus == null) { synchronized (ILFactory.class) { if (bus == null) { bus = new EventBusImpl(); } } } return bus; }图片加载对应包
1.4
图片加载imageloaderXDroid内置了glide作为图片加载工具
1.4.1
Glide的使用glide的使用只需要调用:ILFactory.getLoader().loadAssets(imageView,"",new ILoader.Options(loadingResId,errorResId));
其他方法可以查看源码.自定义图片加载只需两步,不需要修改之前的调用代码。
1.4.2
图片加载扩展ILoader介绍ILoader是一个接口,定义如下:public interface ILoader { void init(Context context); //图片加载框架初始化,通常在App->onCreate方法中调用 void loadNet(ImageView target, String url, Options options); //加载网络资源 void loadResource(ImageView target, int resId, Options options); //加载resource void loadAssets(ImageView target, String assetName, Options options); //加载asset void loadFile(ImageView target, File file, Options options); //加载file void clearMemoryCache(Context context); //clear内存缓存 void clearDiskCache(Context context); //clear磁盘缓存 }
如果项目还有其他需求,可直接在这里进行扩展。
step1
新建一个图片加载控制器,并实现ILoader接口及其对应的几个方法。
step2
在ILFactory中修改getLoader的实现,替换成新的图片加载控制器public static ILoader getLoader() { if (loader == null) { synchronized (ILFactory.class) { if (loader == null) { loader = new GlideLoader(); } } } return loader; }
不需要修改imageloader的调用
1.5
常用工具
1.5.1
加解密Codec
1.5.2
常用工具kits
1.5.3
单例基类SingletonCtx
1.5.4
简单回调SimpleCallback
1.6
日志
1.7
路由
1.8
Api请求
1.9
XDroid配置
1.10
混淆
相关文章推荐
- XDroidMvp 轻量级的Android MVP快速开发框架
- Android 的轻量级orm、ioc快速开发框架(原生)
- Android的快速开发框架 afinal
- Android的快速开发框架 afinal
- Android的快速开发框架 afinal
- Android 快速开发框架AFinal
- Android快速开发框架——Afinal 0.5 发布!
- Afinal 0.2.1 发布 Android的快速开发框架
- Android项目快速开发框架探索(Mysql + OrmLite + Hessian + Sqlite)
- Android项目快速开发框架探索(Mysql + OrmLite + Hessian + Sqlite)
- 使用android快速开发框架afinal 开发android应用程序
- Android的快速开发框架 afinal
- Android项目快速开发框架探索(Mysql + OrmLite + Hessian + Sqlite)
- 使用 Android快速开发框架 Afinal 0.3 快速开发网络应用相关APK
- 使用android快速开发框架afinal的FinalDb操作android数据库
- 10个快速开发Android/Iphone web App应用的框架
- Android的快速开发框架 afinal
- afinal logo Android的快速开发框架 afinal
- Android快速开发框架andbase
- Android快速开发框架-------afinal