Android:换肤

这里使用的是开源框架Android-skin-loader。这个框架已经停止维护了,能满足基本功能需求。

基础使用

添加依赖
将这个库的lib作为module导入,这样方便你根据自己的需求去添加一些功能。

使用

  • 继承BaseActivity或者BaseFragmentActivity或者BaseFragment
  • 在Application中初始化
public class YourApplication extends Application {
	public void onCreate() {
		super.onCreate();
		// Must call init first 
		SkinManager.getInstance().init(this);
		SkinManager.getInstance().load();
	}
}

  • 在布局中标识需要换肤的view
//命名空间
xmlns:skin="http://schemas.android.com/android/skin"
  <TextView
     skin:enable="true" 
      />

  • 从已生成的皮肤文件中设置皮肤
File skin = new File("skin path");
SkinManager.getInstance().load(skin.getAbsolutePath(),
				new ILoaderListener() {
   
					@Override
					public void onStart() {
   
					}

					@Override
					public void onSuccess() {
   
					}

					@Override
					public void onFailed() {
   
					}
				});

生成皮肤文件

生成皮肤文件apk

创建一个App module(记住不是library module)。这个module不需要java文件,可以直接将module_name/src/main/java目录删除。然后在res目录下添加你需要更换的资源文件。记住:需要更换的资源文件必须和主module中的资源文件名字保持一致。
然后直接打包生成apk文件。

复制到主module

将apk文件复制到主module的某个目录下,比如main_module/src/main/assets目录。

更改皮肤文件后缀名

为了防止皮肤文件被用户点击安装,可以将文件后缀改成.skin。或者你自定义一个后缀名。

生成多个皮肤文件

要生成多个皮肤文件,直接在gradle做配置,而无需创建多个module。在skin_module/src目录下创建不同种类的皮肤文件目录,与main同级。这样就可以编译生成不同皮肤的apk。

  • 添加buildType
 android {
     buildTypes{
         bmw {
             
         }
         benz {
             
         }
         toyota {
             
         }
     }
 }


  • 自定义task 自定义一个task,通过获取buildTypes来生成对应的文件夹。
task createAllBuildTypeChildDir() {
   
//遍历main/res下的子目录,然后为不同的buildType生成对应的目录。这里要使用project.rootDir来表示根目录,这样可以自动适配不同的电脑系统
 
 def file = new File("${project.rootDir}/skin_module/src/main/res")
  file.listFiles().each {
    childFile ->
     def dirName =  childFile.name
      project.extensions.each {
    extension ->
          extension.getByName("android").properties.each {
    property ->
              if (property.key == "buildTypes") {
   
                  property.value.each {
    value ->
                      def variantName =  value["name"]
                      if ((
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值