美文网首页
Android动态换肤研究(一)

Android动态换肤研究(一)

作者: 美乃滋酱啊 | 来源:发表于2016-10-31 10:53 被阅读91次

动态改变View的Color等值

SkinWizard

这个换肤库是在研究了android-skin-loader之后,作为学习笔记做出来的一个换肤库

1、主要思路

通过配置不同的“皮肤”(style)文件,通过加载不同的style文件,为每个需要设置颜色(皮肤)的View设置不同的颜色资源。

2、 style配置
<!-- skin -->
 <style name="Default">
     <item name="android:textColor">#0000FF</item>
     <item name="android:background">@color/colorAccent</item>
 </style>

 <style name="BlackNight">
     <item name="android:textColor">#0FF0F0</item>
     <item name="android:background">#f7f700</item>
 </style>

如下,这样的资源文件可以通过

TypedArray typedArray = context.obtainStyledAttributes(styleResId, skinAttrs);

来获取。

3、使用LayoutInflater获取需要配置颜色的View
public class SkinInflateFactory implements LayoutInflater.Factory {

    private ArrayList<SkinItem> mSkinItems = new ArrayList<>();
    private Context mContext;

    @Override
    public View onCreateView(String name, Context context, AttributeSet attrs) {

        mContext = context;
        // 解析出需要换肤的控件
        boolean skinChangeEnable = attrs.getAttributeBooleanValue(SkinConfig.SKIN_CHANGE_NAMESPACE, SkinConfig.SKIN_ATTRIBUTE_NAME, false);

        if (skinChangeEnable) {
            View view = createView(context, name, attrs);
            parseSkinAttrs(view, attrs);

            return view;
        }
        return null;
    }

onCreate中如果返回null则默认使用android自己的Inflate View的方法。

这里,通过获取需要换肤的View,缓存起来,然后现在需要换肤的时候动态读取配置就行了。

4、缺点
  • 不能配置一些自定义的属性;
  • 无法对不同的View的相同的颜色属性(譬如:TextView)配置出不用的颜色值。

相关文章

  • Android动态换肤研究(一)

    动态改变View的Color等值 SkinWizard 这个换肤库是在研究了android-skin-loader...

  • Android换肤方案

    没有任何侵入型的一行代码实现动态换肤的android换肤组件 欢迎star https://github.com/...

  • Android换肤方案总结

    这篇总结也是拖了很久了,欠下的技术债必须得偿还啦~ Android换肤在使用场景上可以区分为静态换肤/动态换肤、应...

  • Android动态换肤

    现在的很多应用都有换肤的功能,例如QQ。这类应用都是在线下载皮肤包,然后在不重启的情况下直接完成换肤 示例 原理 ...

  • Android换肤机制

    参考资料: Android换肤技术总结 Android应用程序插件化研究之AssetManager Android...

  • Android-Skin-Loader源码解析

    源码 一:简介 Android-Skin-Loader是一个通过动态加载技术实现换肤的框架;解决换肤的两个核心问题...

  • Android动态换肤框架-实现换肤

    1、换肤流程 2、采集流程 3、Android资源查找流程 4、采集需要换肤的控件 换肤我们需要换所有可能需要换的...

  • Android动态换肤框架-换肤原理

    注:下文源码有删减,截图只体现主流程 1、换肤原理 换肤就是替换资源(文字、颜色、图片等),而换肤基本有两种模式:...

  • Android 动态换肤 MXSKinChange

    MXSkinChange 动态换肤插件 项目源码:https://gitee.com/zhangmengxiong...

  • Android-动态加载插件资源,皮肤包的实现原理

    原创-转载请注明出处 Android动态加载插件资源 最近在看app的换肤功能。简单的来说就是动态读取插件apk中...

网友评论

      本文标题:Android动态换肤研究(一)

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