下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android实现apk插件方式换肤的实例
这篇文章给大家分享的是有关Android实现apk插件方式换肤的实例的内容。在下觉得挺实用的,因此分享给大家做个参考,一起跟随在下过来看看吧。1.什么时候换肤?xml加载前换肤,如果xml加载后换肤,用户将会看见换肤之前的色彩,用户体验不好。2.皮肤是什么?皮肤就是apk,是一个资源包,包含了颜色、图片等。3.什么样的控件应该进行换肤?包含背景图片的控件,例如textView文字颜色。4.皮肤与已安装的资源如何匹配?资源名字匹配步骤:1.xml加载前换肤,意味着需要将所需要换肤的控件收集起来。因此要监听xml加载的过程。public
class
BaseActivity
extends
Activity
{
SkinFactory
skinFactory;
@Override
protected
void
onCreate(@Nullable
Bundle
savedInstanceState){
super.onCreate(savedInstanceState);
//监听xml生成的过程
skinFactory
=
new
SkinFactory();
LayoutInflaterCompat.setFactory(getLayoutInflater(),skinFactory);
}
}2.需要换肤的控件收集到一个容器中并且不更改自己的逻辑直接换肤(例如:不用在每个需要换肤的空间里面加上:“app:”
自定义控件属性)思考:(1)安装的apk的id与皮肤id是否一样?(2)图片的资源、颜色资源都对应R自动生成的id(3)皮肤包的资源id、R文件的资源id以及app里R文件的资源的id是否是一样的?——是不一样的3.一个activity有多个控件(SkinView)
一个控件对应多个换肤属性(SkinItem)SkinItem来封装这些值:attrName-属性名(background)attrValue-属性值id十六进制(@color/colorPrimaryDark)attrType--类型(color)Id(R文件的id)class
SkinItem{
//
attrName
background
String
attrName;
int
refId;
//
资源名字
@color/colorPrimaryDark
String
attrValue;
//
drawable
color
String
attrType;
public
SkinItem(String
attrName,
int
refId,
String
attrValue,
String
attrType)
{
this.attrName
=
attrName;
this.refId
=
refId;
this.attrValue
=
attrValue;
this.attrType
=
attrType;
}
public
String
getAttrName()
{
return
attrName;
}
public
int
getRefId()
{
return
refId;
}
public
String
getAttrValue()
{
return
attrValue;
}
public
String
getAttrType()
{
return
attrType;
}
}SkinView:class
SkinView{
private
View
view;
private
List<SkinItem>
list;
//收集需要换肤的集合
public
SkinView(View
view,
List<SkinItem>
list)
{
this.view
=
view;
this.list
=
list;
}
}4.收集完毕后,应用换肤(xml加载过程中换肤)
创建SkinManager去获得皮肤apk,app通过SkinManager获取皮肤apk(1)加载皮肤包(loadSkin):通过反射获得AsserManager的addAssetpath()方法,再通过这个方法获得皮肤apk,从而实例化skinResource;再通过PackageManager.getPackageArchiveInfo(path,PackageManager.GET_ACTIVITIES).packageName;获得皮肤包名(2)获取颜色(getColor):判断skinResource是否为空;拿到res的名字,eg:通过“colorAccent”去寻找idAndroid实现apk
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 材料范文之创建文明乡镇汇报材料
- 职场人如何管理自己有限的时间-职场
- 部编版四年级下册道德与法治期末测试卷附答案(考试直接用)
- 小学六年级下册数学期末测试卷含答案【轻巧夺冠】
- 毕业设计文献
- 人教版六年级下册数学期末测试卷及参考答案(轻巧夺冠)
- 人教版六年级下册数学期末测试卷含答案【完整版】
- 人教版四年级下册数学期末测试卷及参考答案【培优b卷】
- 人教版六年级下册数学期末测试卷(预热题)
- 人教版四年级下册数学期末测试卷及答案(新)
- 2022马克思主义基本原理社会实践报告 5篇
- DB37∕T 5118-2018 市政工程资料管理标准
- 《化学电源设计与制造工艺学》第二章化学电源设计理论基础及设计过程
- DB32∕T 2286-2012 湿法橡胶沥青路面施工技术规范
- 我的教师专业成长感悟
- 数字市政综合管理平台建设方案
- 机器学习简介PPT通用课件
- 2022年综合医院建设标准(2008年修订版报批稿)
- 锅炉汽包设计说明书
- 2020年杭州市中考数学试卷及答案(word版含答案)
- 项目部临时用工管理办法
评论
0/150
提交评论