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

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

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

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

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

不多说了直接上,代码

  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. @Override
  11. public void onClick(View v) {
  12. if ("bg0".equals(getSkinResourceName())) {
  13. setSkinResourceName("bg1");
  14. }else if ("bg1".equals(getSkinResourceName())) {
  15. setSkinResourceName("bg2");
  16. }else if ("bg2".equals(getSkinResourceName())) {
  17. setSkinResourceName("bg0");
  18. }
  19. refreshSkin();
  20. }
  21. });
  22. }
  23. @Override
  24. protected void onResume() {
  25. super.onResume();
  26. refreshSkin();
  27. }
  28. /**
  29. * 更换皮肤
  30. * 1.点击更换皮肤快捷菜单后
  31. * 2.程序运行起来后
  32. */
  33. private void refreshSkin() {
  34. int skinId = getSkinResourceId();
  35. findViewById(R.id.layout).setBackgroundResource(skinId);
  36. }
  37. private int getSkinResourceId(){
  38. int skinId = R.drawable.bg0;
  39. String skinName=getSkinResourceName();
  40. if(skinName.equals("bg1")){
  41. skinId = R.drawable.bg1;
  42. } else if(skinName.equals("bg2")){
  43. skinId = R.drawable.bg2;
  44. }
  45. return skinId;
  46. }
  47. private String getSkinResourceName() {
  48. try {
  49. SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);
  50. return preferences.getString(SKIN_ID, "bg0");
  51. } catch (Exception e) {
  52. e.printStackTrace();
  53. return  "bg0";
  54. }
  55. }
  56. private void setSkinResourceName(String skinName) {
  57. SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);
  58. Editor editor =  preferences.edit();
  59. editor.putString(SKIN_ID, skinName);
  60. editor.commit();
  61. }
  62. }

然后上效果

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

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

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

  1. Android QMUI实战:实现APP换肤功能,并自动适配手机深色模式

    Android换肤功能已不是什么新鲜事了,市面上有很多第三方的换肤库和实现方案. 之所以选择腾讯的QMUI库来演示APP的换肤功能,主要原因: 1.换肤功能的实现过程较简单.容易理解: 2.能轻松适配 ...

  2. 一种简单的实现:Android一键换肤功能

    现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,我把原作者的代码重新整理抽取出来,转换成Eclipse项目,重新整理成正确.可直接运行的项目. 代码运行结果如图. ...

  3. Android 换肤功能的实现(Apk插件方式)

    一.概述 由于Android 没有提供一套统一的换肤机制,我猜可能是因为国外更注重功能和体验的原因 所以国内如果要做一个漂亮的换肤方案,需要自己去实现. 目前换肤的方法大概有三种方案: (1)把皮肤资 ...

  4. Android一键换肤功能:一种简单的实现

     Android一键换肤功能:一种简单的实现 现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,这里有一个开源实现,我找了一大堆,发现这个项目相对较为简洁:htt ...

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

    说明 换肤功能,即将整个应用的皮肤都进行更换,其实质,是动态加载swf文件的过程,而这些swf文件则有css文件编译而来. 关于换肤功能,在android和ios系统的实现方式是不同的.主要原因,是因 ...

  6. React-Native 工程添加推送功能 (iOS 篇)

    推送已经是是手机应用的基本功能,如果自己实现一套推送系统费时费力,所有一般我们会使用第三方的推送服务,这里我使用「极光推送」作为集成推送的例子,因为有现成的 react native 插件 jpush ...

  7. Android工程的编译过程

    现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统.自动生成发布文件等等.这些都需要我们对Android工程的编译和打包有一个深入的理解,至少要知道它的每一步都做了什么,需要 ...

  8. 如何把一个android工程作为另外一个android工程的lib库

    http://zhidao.baidu.com/question/626166873330652844 一个工程包含另一个工程.相当于一个jar包的引用.但又不是jar包反而像个package 在网上 ...

  9. 搭建Android工程的步骤及其第一个安卓程序

    1.安卓系统架构 1>底层是Linux系统 2>函数库层 由C或C++写的 3>Application frameWork应用的框架层 4>顶层是应用层 2.JVM与DVM介绍 ...

随机推荐

  1. wireshark教程

    Wireshark世界上最流行的网络分析工具. 这个强大的工具能够捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息.与非常多其它网络工具一样.Wireshark也使用pcap network ...

  2. Android Tombstone/Crash的log分析和定位

    有一句话叫做常在河边走,哪有不湿鞋.我们这些研究和开发Android的project师正应了这句话,相必大家在调试的时候常常会遇到这么个东西吧 *** *** *** *** *** *** *** ...

  3. python基础课程_学习笔记15:标准库:有些收藏夹——fileinput

    标准库:有些收藏夹 fileinput 重要功能 性能 叙述性说明 input([files[,inplace[,backup]]) 便于遍历多个输入流中的行 filename() 返回当前文件的名称 ...

  4. wpf 模拟3D效果(和手机浏览图片效果相似)(附源码)

    原文 wpf 模拟3D效果(和手机浏览图片效果相似)(附源码) pf的3D是一个很有意思的东西,类似于ps的效果,类似于电影动画的效果,因为动画的效果,(对于3D基础的摄像机,光源,之类不介绍,对于依 ...

  5. LNMP 免安装包

    LNMP(Linux-Nginx-Mysql-PHP)可爱的黄金搭档,不过配置并不轻易,而我平常用于测试环境又经常用到,所以打包了这么一个免安装的LNMP包,内置常用库和模块,以及基本的优化设置,这样 ...

  6. 标准I/O缓冲:全缓冲、行缓冲、无缓冲

    说明:我仅仅对网络资源进行了整合,方便学习-.- 基于流的操作终于会调用read或者write函数进行I/O操作.为了使程序的执行效率最高,流对象一般会提供缓冲区,以降低调用系统I/O库函数的次数. ...

  7. rsync+inotify 实现资源服务器的同步目录下的文件变化时,备份服务器的同步目录更新,以资源服务器为准,去同步其他客户端

    测试环境: 资源服务器(主服务器):192.168.200.95 备份服务器(客户端):192.168.200.89 同步目录:/etc/test 同步时使用的用户名hadoop密码12345 实验目 ...

  8. 移动web:Tips消息弹出框

    在web开发中经常会用到像alert这样的弹出消息,每个浏览器自带的消息弹出框都不相同.为了统一外观,实现自定义的功能,动手写一个弹出框插件. 对弹出框的实现要求如下: 1. 仿照IOS系统弹出外观 ...

  9. HDU 3988 Harry Potter and the Hide Story(数论-整数和素数)

    Harry Potter and the Hide Story Problem Description iSea is tired of writing the story of Harry Pott ...

  10. IIS URL Rewrite Module防盗链规则配置方法

    IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...