zoukankan      html  css  js  c++  java
  • 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主题换肤 无缝切换 - 简书

  • 相关阅读:
    HDevEngine in .NET Applications MultiThreading
    C# 打开以对话框,获取文件夹路径 、文件的路径、文件名
    C#设计模式总结
    C#使用Aspose.Cells导出Excel简单实现
    [相机选型] 双目视觉系统的器材选型和搭建
    08 Django组件-Forms组件
    MySql数据库基础知识
    MySql数据库多表操作
    补充01 Django 类视图
    07 Django组件-中间件
  • 原文地址:https://www.cnblogs.com/jjx2013/p/6223637.html
Copyright © 2011-2022 走看看