首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android兑现类似微博的换肤功能

2012-12-30 
Android实现类似微博的换肤功能现在想做一个和新浪微博客户端一样的更换主题样式的功能,从网上搜了很多,多

Android实现类似微博的换肤功能
现在想做一个和新浪微博客户端一样的更换主题样式的功能,从网上搜了很多,多数都是说使用SharedUserid来控制,但是我不清楚,到底怎么使用,在主程序中如何来实现具体的更换操作;

其实我就是想要个这样的功能:
主程序一次性写好,默认自带有一套主题皮肤样式,之后的只需要像微博那样,下载新的皮肤apk安装即可更换;
即使客户端已经安装了很多个apk,主程序也照样在不变的情况下来回切换不同的皮肤风格;

请问大家,这样的一种功能,该怎么实现?
最好说说具体的思路,或者给个线程的Demo看看也行。
先谢谢各位了Android兑现类似微博的换肤功能
[解决办法]
问题很偏。我一般做都是换背景图片。。。
[解决办法]
换皮肤就是换图片。。。

你在数据库中存下当前选择的是什么皮肤,加载对应的图片就可以了。。。

没写过,应该是这样的。。。
[解决办法]
 第二个问题,Android只提供了get 一个 Attr的方法,没有set对应方法。如果你要动态修改,只能利用xml解析(可以参考org.xml.sax.helpers.AttributesImpl类),或者是文件操作(相对于第一个更难) ;

 第一个问题,我之前看到过一个类似项目,是如下做的:
   1、获得每个皮肤包(XXX.apk)的packageName ;
   2、使用Resource的 public int getIdentifier (String name, String defType, String defPackage)或得该皮肤包下资源名称的resId , 即可调用view.setXX(resId)了;。
  
  当然得确保资源名是统一的。 可以参考:http://blog.csdn.net/vincent_czz/article/details/7433365
[解决办法]
Lz 下一个adw launcher下来看看,里面就有主题切换的功能,也就是相当于你的换肤功能。
无非是:
String themePackage=AlmostNexusSettingsHelper.getThemePackageName(this, THEME_DEFAULT);
    PackageManager pm=getPackageManager();
    Resources themeResources=null;
    if(!themePackage.equals(THEME_DEFAULT)){
    try {
themeResources=pm.getResourcesForApplication(themePackage);
} catch (NameNotFoundException e) {
//ADW The saved theme was uninstalled so we save the default one
    AlmostNexusSettingsHelper.setThemePackageName(this, Launcher.THEME_DEFAULT);
}
    }
if(themeResources!=null){
    //Action Buttons
loadThemeResource(themeResources,themePackage,"lab_bg",mLAB,THEME_ITEM_BACKGROUND);

热点排行