动态换肤框架原理解析

原创 2018年04月16日 15:44:32

阅读该文(动态换肤框架原理)你会了解:

1、 网易云换肤的由来

2、 换肤框架的编写




一 、 首先了解一下换肤的主要APP

目前市场上主要换肤的APP有网易云音乐作为代表:

换肤前 换肤后
网易云首页 未换肤 这里写图片描述

另外还有高德地图同样也有换肤,但是换肤比较特殊,只有默认的几套皮肤供选择,这里不再赘述。

二 、 网易云音乐换肤过程

1. 下载皮肤包
① 可以在看到网易云包中的数据

root@android:/data/data # cd com.netease.cloudmusic/ 
root@android:/data/data/com.netease.cloudmusic # ls
app_mpcd
cache
code_cache
databases
files
lib
shared_prefs
root@android:/data/data/com.netease.cloudmusic #

可以看到网易云音乐包中包含  files 文件夹,我们再来看看其中的数据:
<pre><code>root@android:/data/data/com.netease.cloudmusic # cd files

root@android:/data/data/com.netease.cloudmusic/files # ls
MAMStatistic
RecentMusic
Session.Account
Session.Profile
Statistic
banner_cache
com.netease.cloudmusic:play
main_page_content_cache_4.3
main_page_content_head_cache_4.3
theme

其中theme文件夹顾名思义是主题的意思,我们看看其中的数据:

<pre><code> 

root@android:/data/data/com.netease.cloudmusic/files # cd theme
root@android:/data/data/com.netease.cloudmusic/files/theme # ls
681050.skin411

这里我们看到了681050.skin411这个文件,其实这个文件就是一个常用的apk文件,只是对后缀进行了修改,我们从手机中获取到该文件:

<pre><code> 

root@android:/data/data/com.netease.cloudmusic/files/theme # ls
681050.skin411
root@android:/data/data/com.netease.cloudmusic/files/theme # cp 681050.skin411 /sdcard
127|root@android:/ # exit
C:\Users\HP>adb pull /sdcard/681050.skin411
/sdcard/681050.skin411: 1 file pulled. 1.8 MB/s (2380116 bytes in 1.236s)

解压出皮肤包,可以看到,这就是我们熟悉的apk文件:

文件 内容
解压后的文件 res中的文件

这里解释一下,为什么要用到apk,而不是直接是用压缩包的形式: 因为需要修改的是资源文件中带有 src 或者 background 的控件,获取到的是资源ID,所以需要一个映射表来对应,必须要有 resources.arsc 这个文件


2. 获取所需换肤的控件

    观察app中的变化,可以获取到如下需要换肤的属性
<pre><code>
View : background
TextView : textColor    drawableLeft、    drawableRight、    drawableTop、    drawableBottom、
ImageView : src
自定义view
</code></pre>
版权声明:转载需注明出处,万分感谢! https://blog.csdn.net/sunyao19940708/article/details/79961553

Android动态换肤开源库Colorful发布

最近本人需要用到夜间模式,但是经过一番搜索似乎并没有看到好的开源实现,看到有一个类似的库MultipleTheme,但是需要自定义所有要实现换肤功能的View,感觉比较麻烦。因此本人花了点时间简单弄了...
  • bboyfeiyu
  • bboyfeiyu
  • 2015年09月09日 20:26
  • 6192

Android换肤功能实现与换肤框架QSkinLoader使用方式介绍

框架地址:https://github.com/qqliu10u/QSkinLoader 效果图 如果想要看框架使用,请直接看第三部分。一、综述此框架脱胎于项目需要实现夜间模式的需求,在上一篇文章...
  • u013478336
  • u013478336
  • 2016年11月08日 15:48
  • 7055

android之换肤原理解读

如下是解读demo的链接,自行下载 https://github.com/fengjundev/Android-Skin-Loader 由于是开源的,而且对于想了解换肤功能的童鞋这个demo实...
  • zhongwn
  • zhongwn
  • 2016年10月22日 17:21
  • 3484

Android主题换肤实现

本系列文章主要是对一个Material Design的APP的深度解析,主要包括以下内容 基于Material Design Support Library作为项目整体框架。对应博文:Android ...
  • whuhan2013
  • whuhan2013
  • 2016年05月27日 19:27
  • 1970

Android中插件开发篇之----应用换肤原理解析

一、前言今天又到周末了,感觉时间过的很快呀.这周媳妇生气了,所以就不能和她happy了,那只能写blog了。那么今天就来看看应用的换肤原理解析。在之前的一篇博客中我说道了Android中的插件开发篇的...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2015年08月15日 13:09
  • 22990

Android插件式换肤框架搭建 - 无缝插件式换肤框架完善

1. 概述  基于插件式换肤框架搭建 - 资源加载源码分析和插件式换肤框架搭建 - setContentView源码阅读前两篇文章,那么目前我们不仅可以从另外一个插件皮肤包中获取资源了而且还可以去拦截...
  • z240336124
  • z240336124
  • 2017年03月20日 15:05
  • 422

Android动态换肤框架实现

今天介绍一下Android 中的常用的换肤策略,同时动手实现一个动态换肤的框架 先上效果图: &nbsp; 换肤概念 &nbsp; 换肤: 在android中是指 对 文...
  • mike_Cui_LS
  • mike_Cui_LS
  • 2018年03月25日 17:25
  • 350

整合 iOS几种换肤思路和demo

参考代码 :  https://github.com/jiecao-fm/SwiftTheme   中文版解释  https://github.com/jiecao-fm/SwiftTheme/blo...
  • u014600626
  • u014600626
  • 2017年06月05日 17:32
  • 511

Android Theme主题样式一键换肤

前言    之前看过网易云音乐换肤的demo,是一个开源项目,实现方法大概是添加Gradle依赖后,再创建一个拥有不同图片和主题风格的项目子模块,然后切换所谓的主题切换,就能够根据不同的方法设定,呈现...
  • csdn_aiyang
  • csdn_aiyang
  • 2017年10月31日 10:55
  • 379

WINDOWS 换肤的原理及解析

关于软件换肤原理其实非常简单,就是hook + subclass, 替换窗口过程,自己重写界面绘制,基本上就是响应WM_PAINT, WM_NCPAINT消息。但难点就在绘制的处理上,Windows标...
  • netanimals
  • netanimals
  • 2010年05月29日 04:42
  • 1991
收藏助手
不良信息举报
您举报文章:动态换肤框架原理解析
举报原因:
原因补充:

(最多只允许输入30个字)