• Android主题换肤实现


    本系列文章主要是对一个Material Design的APP的深度解析,主要包括以下内容

    • 基于Material Design Support Library作为项目整体框架。对应博文:Android Material Design 兼容库的使用详解

    • RecyclerView的万能适配器。对应博文:打造一个RecyclerView的万能适配器-减少你的代码冗余

    • 高仿QQ的自定义View。对应博文:Android自定义View之高仿QQ健康

    • 主题换肤功能。对应博文:Android主题换肤 无缝切换

    效果图

    Android主题换肤

    源码解析参见

    Android主题换肤 无缝切换 - 简书

    使用

    在使用的时候一定要记得要Activity要去继承于SkinBaseActivity,Fragment要继承于SkinBaseFragment,Application要继承于SkinBaseApplication。当然把这个框架做为你的项目依赖项肯定是必不可少的。为了Demo的简单,这里我只使用了下面三个颜色作为可以换肤的资源,当然如果你想要使用drawable文件也是可以办到的,前提是你一定要把这个Demo看懂。

    来看一个布局文件

    其中
    xmlns:skin=”http://schemas.android.com/android/skin”
    是我们自定义的,在SkinConfig有。
    我们只需在有皮肤更改需求的View中加入skin:enable=”true” 就OK了。

    再来看看MainActicvity的部分代码

    这里就是动态的添加有皮肤更改需求的View。

    上面就介绍完了在布局文件中使用方法和在代码中使用方法。

    我们应该怎么去换肤呢?很简单,只需调用SkinManager的load方法就可以了,把皮肤路径传进去就可以了,我的这个Demo为了简单起见,没有做在线换肤的功能,只是在本地提供了可以更换的皮肤,看到这里我相信你对怎样在线换肤已经有想法了

    最最后我们来看看怎么去开发皮肤包。其实这个是最简单的,皮肤包实际上就是一个基本的Android项目,里面不包含类文件,只有资源文件。这里只需注意 这里的资源文件名字一定要和原项目中的相同,并且只用包含那些在皮肤更改时需要改变的那些就行了!例如我的这个Demo就只是简单对上面的三种颜色做了简单的切换。开发了棕色和黑色两款皮肤,所以资源文件中只有三个color的值,开发完成之后我们需要将其打包成apk文件,为防止用户点击安装,我们将其后缀改成了skin,这样做也具有标识性。如果还是不太清楚可以直接去源码中查看。

    源代码

    代码下载

    参考链接

    Android主题换肤 无缝切换 - 简书

  • 相关阅读:
    进程间通讯----消息队列和共享内存方式的实现
    初探 Yii2 的测试模式 index-test.php
    nginx缓存功能的设置
    php五大运行模式CGI,FAST-CGI,CLI,ISAPI,APACHE模式
    workerman如何写mysql连接池
    Varnish 一般是放在 Nginx 前面还是后面的?
    关于PATH_INFO
    Java8 Lambda表达式
    synchronized的一些记录
    类和实例
  • 原文地址:https://www.cnblogs.com/jjx2013/p/6223637.html
Copyright © 2020-2023  润新知