Android 主题换肤的开源库
来源:互联网 发布:西安行知中学怎么样 编辑:程序博客网 时间:2024/05/08 22:18
本开源库是基于我之前的一篇博文《Android主题换肤 无缝切换》,不知道原理的可以先看看。
出于易于集成的目的,我将其抽取出来,作为一个模块。提供简洁的 API,方便使用。
目前暂时没有发现兼容性问题,欢迎提供使用反馈。
更新日志:
1.v1.1.0:可以直接加载网络上的皮肤文件
效果图如下:
1. 使用方法:
- 添加依赖
compile 'com.solid.skin:skinlibrary:1.1.0'
- 让你的Application继承于SkinBaseApplication
- 让你的Activity继承于SkinBaseActivity,如果使用了Fragment则继承于SkinBaseFragment
- 在需要换肤的根布局上添加
xmlns:skin="http://schemas.android.com/android/skin"
,然后在需要换肤的View上加上skin:enable="true"
- 新建一个项目模块(只包含有资源文件),其中包含的资源文件的name一定要和原项目中有换肤需求的View所使用的资源name一致。
- 打包皮肤文件,放入assets中的skin目录下(skin目录是自己新建的)
- 调用换肤
- 从assets/skin文件夹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SkinManager.getInstance().loadSkin("Your skin file name in assets(eg:theme.skin)",
new ILoaderListener() {
@Override
public void onStart() {
Toast.makeText(getApplicationContext(), "正在切换中", Toast.LENGTH_SHORT).show();
}
@Override
public void onSuccess() {
Toast.makeText(getApplicationContext(), "切换成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailed() {
Toast.makeText(getApplicationContext(), "切换失败", Toast.LENGTH_SHORT).show();
}
}
);
- 从网络
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SkinManager.getInstance().loadSkinFromUrl(skinUrl,newILoaderListener(){
@Override
publicvoidonStart(){
Log.i("ILoaderListener","正在切换中");
dialog.setContent("正在从网络下载皮肤文件");
dialog.show();
}
@Override
publicvoidonSuccess(){
Log.i("ILoaderListener","切换成功");
dialog.dismiss();
}
@Override
publicvoidonFailed(StringerrMsg){
Log.i("ILoaderListener","切换失败:"+errMsg);
dialog.setContent("换肤失败:"+errMsg);
}
@Override
publicvoidonProgress(intprogress){
Log.i("ILoaderListener","皮肤文件下载中:"+progress);
dialog.setProgress(progress);
}
});
详细的使用,请到示例项目中查看
2. 其他一些重要的api
- SkinConfig.isDefaultSkin(context):判断当前皮肤是否是默认皮肤
- SkinManager.getInstance().restoreDefaultTheme(): 重置默认皮肤
- dynamicAddView:当动态创建的View也需要换肤的时候,就可以调用dynamicAddView
3. 使用注意事项:
- 默认不支持状态栏颜色的更改,如果需要换肤的同时也要更改状态栏颜色,请到您的Application文件中加入
SkinConfig.setCanChangeStatusColor(true);
,布局文件中的根布局一定要加上 android:fitsSystemWindows=”true” 状态栏的颜色值来源于colorPrimaryDark
- 本开源库使用的Activity是AppCompatActivity,使用的Fragment是android.support.v4.app.Fragment
- 有换肤需求View所使用的资源一定要是引用值,例如:@color/red,而不是#ff0000
- 当感觉自带的换肤属性不够用时,可以把源码下载下来自己去添加attr
致谢:
本项目是基于Android-Skin-Loader这个开源库改进而来,再次对原作者表示感谢 Android-Skin-Loader
LICENSE
1
2
3
4
5
6
7
8
9
10
11
12
13
Copyright[2015][FENGJUN]
LicensedundertheApacheLicense,Version2.0(the"License");
youmaynotusethisfileexceptincompliancewiththeLicense.
YoumayobtainacopyoftheLicenseat
http://www.apache.org/licenses/LICENSE-2.0
Unlessrequiredbyapplicablelaworagreedtoinwriting,software
distributedundertheLicenseisdistributedonan"AS IS"BASIS,
WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
SeetheLicenseforthespecificlanguagegoverningpermissionsand
limitationsundertheLicense.
1 0
- Android 主题换肤的开源库
- Android 主题换肤的开源库
- Android主题换肤
- Android主题换肤实现
- Android高级应用之 换肤 换主题 主题管理
- Android 切换主题以及换肤的实现
- 主题:Android 皮肤apk实现换肤
- android 动态切换主题,动态换肤
- Android主题换肤 无缝切换
- Android主题换肤 无缝切换
- Android主题换肤 无缝切换
- Android主题换肤 无缝切换
- android 主题切换(换肤功能)
- android app换肤(更换主题)
- Android主题换肤 无缝切换
- Android主题换肤 无缝切换
- Android主题换肤 无缝切换
- Android主题换肤 无缝切换
- 在Python虚拟环境中使用环境外的mysql
- ETCD:从应用场景到实现原理的全方位解读
- 618 总结
- Android开发四大组件---Service详解
- XML pull解析
- Android 主题换肤的开源库
- Android APP安装后不在桌面显示图标的应用场景举例和实现方法
- java导入导出pdf文档实践
- 串口通信基本接线方法
- Python调用NLPIR/ICTCLAS进行文本分词
- Git详细使用教程
- UVA 1151 && POJ 2784 - Buy or Build 最小生成树 二进制枚举
- Hibernate的save方法不能进行数据库插入的解决办法
- mat工具使用