Android系统更换主题外观的实现方法

编程入门 行业动态 更新时间:2024-10-08 06:27:05

Android系统更换主题<a href=https://www.elefans.com/category/jswz/34/1761769.html style=外观的实现方法"/>

Android系统更换主题外观的实现方法

作者:Liuhua Chen

 

一、   实现思路

安卓应用在读取资源时是由AssetManager和Resources两个类来实现的。Resouce类是先根据ID来找到资源文件名称,然后再将该文件名称交给AssetManager来打开文件。我们主题开发的核心思路就是在应用读取资源时,先去主题包里读取资源,若有资源,直接返回主题包的资源,若无资源,直接返回应用本身的资源。

参考博客:

二、   方案实现

a)   修改源码Resource.java

private LoadResourcesCallBack mCallBack;

public interface LoadResourcesCallBack{
    ColorStateListloadColorStateList(TypedValue value, int id);

    Drawable loadDrawable(TypedValue value, int id);

    XmlResourceParser loadXmlResourceParser(int id, String type);

    int getDimensionPixelSize(int index);

    int getDimensionPixelOffset(int index);

    float getDimension(int index);

    Integer getInteger(int index);
}

public LoadResourcesCallBack getLoadResourcesCallBack() {
    return mCallBack;
}

public boolean regitsterLoadResourcesCallBack(LoadResourcesCallBackcallBack) {
    if (callBack== null || mCallBack != null) {
        return false;
    }
    mCallBack = callBack;
    return true;
}

在Resouces类是主要加这个接口,这个接口就是主题改变的关键所在。接口LoadResourcesCallBack中的抽象方法,从名子中可以发现,Resources类中也有同名的方法。LoadResourcesCallBack中的方法就是在Resources同名方法中调用,即Resouces类中在执行这些方法时,会先执行LoadResourcesCallBack实现的方法。

LoadResourcesCallBack抽象方法实现如下:

context.getResources().regitsterLoadResourcesCallBack(new Resources.LoadResourcesCallBack() {
    @Override

更多推荐

Android系统更换主题外观的实现方法

本文发布于:2024-02-07 13:17:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757165.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:外观   方法   主题   系统   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!