近期在整理插件化方面的知识,今天以换皮肤效果的例子总结如下:
插件开发好处
- 有助于协同开发,有助于功能扩展等等…
- 如支付宝主界面都是模块分类,每一个入口就是插件
成为插件的要求
- 插件程序是不需要程序主入口的
- 插件程序必须要遵循主程序的协议才能成为插件
- 插件开发不管插件是图片还是功能,它们都是通过类反射来找到插件资源
- 在manifest中具有相同的
android:sharedUserId
插件开发步骤
- 新建一个工程,准备图片资源
- 新建布局文件
- 初始化UI主键
- 初始化popupWindow,新建popupWindow布局文件(提示框)
- 查找插件列表
- 显示皮肤列表
- 加载插件资源
- 规范插件资源协议
- 添加插件程序
要用到的知识点
- android基本UI组件的使用
- 掌握android PackageManager类的基本使用(包括app的基本信息:应用程序的名称、应用程序的包名)
- 掌握android资源加载器(资源:图片、文字、字体大小、样式)
- 掌握如何定义插件开发协议(插件开发协议:图片命名规范、文字命名规范、类的命名规范)
- 掌握java类反射机制
- 掌握android shareuserid的使用
- 掌握android 插件架构设计
主程序
MainActivity
1 | public class MainActivity extends Activity implements OnClickListener, |
MainActivity的布局文件
1 | <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" |
插件程序
插件程序没有程序入口,所以manifest中application节点不定义入口activity,并且与主程序有相同的android:sharedUserId="com.example.plugin.background"