android项目中实现内置主题切换

新人一个,接到任务,做一个超市收银APP的内置皮肤切换。

项目比较小,新旧主题也是简单的图片和色值改变,整体布局没有变化。

很显然实现这种简单的空间占有量不大的功能,内置皮肤就可以了。

 

下面我们拿一个button做例子。

首先看layout中的布局文件。

代码中的背景,和文本颜色,我们引用了自定义属性。

在values目录中,创建attr.xml。



    
    

在values目录中,styles.xml文件中,定义主题

最后在Activity的onCreate()方法中,在setContentView()方法之前,执行setTheme()

setTheme(CommonUtils.getThemeId(this));//获取主题ID
setContentView(R.layout.activity_goods);
/**
 * SharedPreferences方式 读取主题ID
 */
public static int  getThemeId(Context c) {
    //创建SharedPreferences对象
    SharedPreferences sharedPreferences = c.getSharedPreferences("themeId",Context.MODE_PRIVATE);
    //根据key获取对应的数据

    int i =  Integer.parseInt(sharedPreferences.getString("theme","0"));
    if (i==0){
        i= R.style.defaultTheme;
    }

    return i;
}

在每次切换主题时,执行下面方法,重新加载页面

finish();
final Intent intent=getIntent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
overridePendingTransition(0,0);

然后就可以了

 

 

你可能感兴趣的:(android)