android工程实现换壁纸功能(转)

最近工作要实现换壁纸小功能,将代码做成demo发出来

没有采用zip格式换肤,因为只是更换一张图片背景

1.将三张图放入drawable-hdpi,我放的是480*800的

2.用sharedPreference存取皮肤的id,以便于下次启动的时候根据id来选择用哪个皮肤,在onresume()里刷新皮肤

3.存到sharedPreference的数据采用string,不能采用图片的id,因为图片的id是每次程序启动后又会重新生成的

不多说了直接上,代码

 

[java] view plaincopy

 

  1. public class ChangeSkinActivity extends Activity {  
  2.     private static final String SKIN_ID = "skin_id";  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
  7.         setContentView(R.layout.main);  
  8.         Button btnChangeSkin = (Button) findViewById(R.id.btnChangeSkin);  
  9.         btnChangeSkin.setOnClickListener(new View.OnClickListener() {  
  10.               
  11.             @Override  
  12.             public void onClick(View v) {  
  13.                 if ("bg0".equals(getSkinResourceName())) {  
  14.                     setSkinResourceName("bg1");  
  15.                 }else if ("bg1".equals(getSkinResourceName())) {  
  16.                     setSkinResourceName("bg2");  
  17.                 }else if ("bg2".equals(getSkinResourceName())) {  
  18.                     setSkinResourceName("bg0");  
  19.                 }  
  20.                 refreshSkin();  
  21.             }  
  22.         });  
  23.     }  
  24.     @Override  
  25.     protected void onResume() {  
  26.         super.onResume();  
  27.         refreshSkin();  
  28.     }  
  29.     /** 
  30.      * 更换皮肤 
  31.      * 1.点击更换皮肤快捷菜单后 
  32.      * 2.程序运行起来后 
  33.      */  
  34.     private void refreshSkin() {  
  35.         int skinId = getSkinResourceId();  
  36.         findViewById(R.id.layout).setBackgroundResource(skinId);  
  37.     }  
  38.     private int getSkinResourceId(){  
  39.         int skinId = R.drawable.bg0;  
  40.         String skinName=getSkinResourceName();  
  41.         if(skinName.equals("bg1")){  
  42.             skinId = R.drawable.bg1;  
  43.         } else if(skinName.equals("bg2")){  
  44.             skinId = R.drawable.bg2;  
  45.         }  
  46.         return skinId;  
  47.     }  
  48.     private String getSkinResourceName() {  
  49.         try {  
  50.             SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);  
  51.             return preferences.getString(SKIN_ID, "bg0");  
  52.         } catch (Exception e) {  
  53.             e.printStackTrace();  
  54.             return  "bg0";  
  55.         }  
  56.     }  
  57.     private void setSkinResourceName(String skinName) {  
  58.         SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);  
  59.         Editor editor =  preferences.edit();  
  60.         editor.putString(SKIN_ID, skinName);  
  61.         editor.commit();  
  62.     }  
  63. }  

然后上效果

 

下载地址:http://download.csdn.net/detail/ethan_xue/4413167

http://blog.csdn.net/ethan_xue/article/details/7720177

时间: 2024-09-22 03:24:41

android工程实现换壁纸功能(转)的相关文章

Android编程实现换肤功能实例_Android

本文实例讲述了Android编程实现换肤功能的方法.分享给大家供大家参考,具体如下: 本系列专题培训适用范围:初级Android程序员,即有J2SE基础和Android初级水平.J2SE基础是指掌握JAVA语法,1.5.1.6新增的语法不完全掌握也没关系.了解基本的面向对象思想.能编写简单的J2SE程序,掌握基本的调试方法,熟悉Swing更好.Android初级是指掌握Activity.Service.BroadcastReceiver.Intent.SQLite.UI组件的使用,能参照例子编写

android换肤功能 如何动态获取控件中背景图片的资源id?_Android

这个是在在做一个换肤功能时遇到的问题.   对于换肤,网上都有示例,可以从别的皮肤安装包中读取所要的资源,前提是你必须先持有这个资源的引用名称,像R.drawable.background(喂,这不是废话嘛).这个换肤的方案原理就是,自身应用的资源名称是R.drawable.background,那皮肤包中应该也是这个名称,然后通过这个名称获取该资源在皮肤包中的具体id,代码: //先获取本地资源引用名称,type name是R.drawable.background中的"drawable&qu

小米-如何实现这个功能:android设置锁屏壁纸

问题描述 如何实现这个功能:android设置锁屏壁纸 最近一直在困惑如何设置android手机的锁屏壁纸: 对于android原生rom,是没有锁屏壁纸一说的.但是对于三星和小米等厂商的手机,区别对待了锁屏壁纸和桌面壁纸. android提供的api中,有设置桌面壁纸的接口,但是没有发现设置锁屏壁纸的api. 我该怎么办?通过什么方法能够实现成功设置锁屏幕壁纸呢? 请各位帮帮忙!

Flex AIR应用换肤功能(Android和IOS)

说明 换肤功能,即将整个应用的皮肤都进行更换,其实质,是动态加载swf文件的过程,而这些swf文件则有css文件编译而来. 关于换肤功能,在android和ios系统的实现方式是不同的.主要原因,是因为ios不支持本地加载(ipa中包含)多个swf文件.   换肤基础 1) 原理 :就是将各种不同的css文件先编译成swf,然后用StyleManager类的loadStyleDeclarations方法加载换肤的swf. 2) 基础: 定义css文件,如下: /* CSS file */ @na

android换肤功能 如何动态获取控件中背景图片的资源id?

这个是在在做一个换肤功能时遇到的问题. 对于换肤,网上都有示例,可以从别的皮肤安装包中读取所要的资源,前提是你必须先持有这个资源的引用名称,像R.drawable.background(喂,这不是废话嘛).这个换肤的方案原理就是,自身应用的资源名称是R.drawable.background,那皮肤包中应该也是这个名称,然后通过这个名称获取该资源在皮肤包中的具体id,代码: //先获取本地资源引用名称,type name是R.drawable.background中的"drawable"

服务器-android 关于实现点赞收藏功能上传问题

问题描述 android 关于实现点赞收藏功能上传问题 请问实现点赞或者收藏需要向服务器上传数据么,我直接操作数据库不可以么 解决方案 不向服务器上传的话,相当于的就是你在玩单机.肯定得数据同步.不然,你下次刷新下就会出现问题.换台设备登录的话.也会有问题的. 解决方案二: 你操纵不了数据库,不能直连,需要什么,要看你们产品需求是什么样,至少要传递用户信息,后台要记录是谁点赞,赞了谁,后台做一个http接口,你调用上传参数 解决方案三: 看你是单机还是联网咯,联网就得上传

过滤Android工程中多余资源文件的解决方法_Android

本文以实例讲述了过滤Android工程中多余资源文件的解决方法,很有实用价值!具体描述如下: 很多开发人员在Android项目开发过程中经常会遇到这样的情况:界面开发人员发布了一个新版本的资源包,不过有的图片名称改了,有的图片删掉了,可是在实现的时候开发人员只是把新的资源覆盖到原来的资源文件夹中,随着版本的发布,在drawable或values中积累的无用资源越来越多,直到最后发布正式版的时候再想要删除这些多余的文件,于是不得不一个一个文件检查看是否有用,再决定要不要删除之. 有鉴于此,很有必要

谷歌高管:Android从未抄袭苹果iPhone功能

北京时间4月12日早间消息,在周五苹果公司和三星的专利侵权诉讼 听证会中,谷歌一名高管表示,谷歌工程师从未在Android系统中抄袭iPhone的功能.谷歌Android工程副总裁希罗什·洛克海姆(Hiroshi Lockiheimer)在此次庭审中向陪审团介绍了谷歌早期的Android开发工作,并表示谷歌工程师实际上希望使Android与iOS产生区别.他表示:我们希望拥有自己的特点和自己的思想.我们对所做的一切很有热情,而拥有自己的思想非常重要.在三星与苹果公司的专利侵权纠纷中,洛克海姆是三

ubuntu 10.04安装eclipse 怎么配置环境变量还是安装什么插件,可以创建android工程。

问题描述 我按照网上的教程(http://limssb.blog.163.com/blog/static/147304372010810101747796/),安装完毕就是在eclipse的preferences上找不到android选项,也不知道怎么创建android工程,求救求教. 解决方案 解决方案二:需要ADT插件下载地址:http://dl.google.com/android/ADT-0.9.7.zip(应该需要翻墙)启动Eclipse,选择Help>InstallNewSoftwa