美文网首页Android基础Android开发学习
Android-skin-support框架使用的一些坑

Android-skin-support框架使用的一些坑

作者: Candy有雪吃 | 来源:发表于2018-02-08 17:43 被阅读138次

    公司产品有一个换肤需求,刚好年后才正真开始,所以利用年前这几天调研下换肤功能,网上百度了下发现还有不少的第三方框架可以直接使用,所以就果断决定选择其中一个框架来使用。调研了一天,其中发现Android-skin-support这个框架不错,github上面写的很详细,而且扩展性也很好,关键的关键还有纯中文文档,一切觉得是那么简单,可是搞了两天才把换肤最最基础的搞好。下面就说说自己遇到的坑吧!只是对于我自己可能是个坑,其他人不一定的,反正留着自己看吧!

    具体的操作流程可以:https://github.com/ximsfei/Android-skin-support,上面有很详细的流程,我也是按照来的,只是这里记录在实际应用遇到的githut上面没有的细节。

    坑一:自己创建新的demo项目,测试基础控件换肤功能,发现无论如何都换肤不成功,皮肤使用下载的night.skin

    按照githut上面的步骤执行添加之后你会发现,仍然无法实现换肤,在监听里面一直提示资源获取失败。

                      先说说github上面的步骤(实现最简单的换肤功能)

    1:导入依赖: compile 'skin.support:skin-support:2.2.3' ,这是导入基础控件的换肤

    2:导入皮肤包,我最开始是用放在应用里面的方法,即将皮肤包放在app/assets/skins下面,一定要放在skins下面

    3:自定义Application,在onCreate中初始化换肤的管理类(SkinCompatManager)

    4:将要换肤的activity继承SkinCompatActivity,在要换肤的地方调用换肤方法,

    SkinCompatManager.getInstance().loadSkin("night.skin");

    入参可以自己查看,可以实现监听等

    这些是githut上面说明的方法,但是但是不行,我在这儿坑了好久,最后发现需要添加权限,就没想到还要添加读写外部存储权限

       坑二:当上面成功之后,你觉得自己已经实现换肤功能了,但是当自己制作皮肤包时又被坑了一把。

            还是github上面已给出的方法。

            1:新建Android Application,皮肤工程包名不能和宿主包名相同,就这一步一直有疑问,开始不知道具体创建哪个module;

            2:修改对应资源

    3:打包生成APK,这步是最坑的,刚开始以为直接将对应module Run就OK的,然后会出现没有默认activity问题,这个百度了下就解决了,然后就这样生成了apk了,改名放入assets中发现无效,同样找了好久问题。

    对应新建哪个module的问题,需要新建Phone & Table Module 这个,选择无activity

    对于打包问题,需要用到studio下面的Terminal命令行来编译: ./gradlew :skin3:assembleDebug  skin3就是对应皮肤包名。

    打包完的apk路径:/work/demos/soarosLauncher/skin/Skins/skin3/build/outputs/apk/debug。

       坑三:如果想将皮肤包放到sdCard中,不能指定存放位置,固定需要写入:/Android/data/你的应用包名/cache/skins/

            我发现放在assets下面的皮肤包也会被放置到上面的路径下面,然后在执行换肤,所以第一条里面的读写权限

    相关文章

      网友评论

        本文标题:Android-skin-support框架使用的一些坑

        本文链接:https://www.haomeiwen.com/subject/vwnttftx.html