android工程实现换壁纸功能(转)
最近工作要实现换壁纸小功能,将代码做成demo发出来
没有采用zip格式换肤,因为只是更换一张图片背景
1.将三张图放入drawable-hdpi,我放的是480*800的
2.用sharedPreference存取皮肤的id,以便于下次启动的时候根据id来选择用哪个皮肤,在onresume()里刷新皮肤
3.存到sharedPreference的数据采用string,不能采用图片的id,因为图片的id是每次程序启动后又会重新生成的
不多说了直接上,代码
- public class ChangeSkinActivity extends Activity {
- private static final String SKIN_ID = "skin_id";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- this.requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.main);
- Button btnChangeSkin = (Button) findViewById(R.id.btnChangeSkin);
- btnChangeSkin.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if ("bg0".equals(getSkinResourceName())) {
- setSkinResourceName("bg1");
- }else if ("bg1".equals(getSkinResourceName())) {
- setSkinResourceName("bg2");
- }else if ("bg2".equals(getSkinResourceName())) {
- setSkinResourceName("bg0");
- }
- refreshSkin();
- }
- });
- }
- @Override
- protected void onResume() {
- super.onResume();
- refreshSkin();
- }
- /**
- * 更换皮肤
- * 1.点击更换皮肤快捷菜单后
- * 2.程序运行起来后
- */
- private void refreshSkin() {
- int skinId = getSkinResourceId();
- findViewById(R.id.layout).setBackgroundResource(skinId);
- }
- private int getSkinResourceId(){
- int skinId = R.drawable.bg0;
- String skinName=getSkinResourceName();
- if(skinName.equals("bg1")){
- skinId = R.drawable.bg1;
- } else if(skinName.equals("bg2")){
- skinId = R.drawable.bg2;
- }
- return skinId;
- }
- private String getSkinResourceName() {
- try {
- SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);
- return preferences.getString(SKIN_ID, "bg0");
- } catch (Exception e) {
- e.printStackTrace();
- return "bg0";
- }
- }
- private void setSkinResourceName(String skinName) {
- SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);
- Editor editor = preferences.edit();
- editor.putString(SKIN_ID, skinName);
- editor.commit();
- }
- }
然后上效果



下载地址:http://download.csdn.net/detail/ethan_xue/4413167
http://blog.csdn.net/ethan_xue/article/details/7720177
android工程实现换壁纸功能(转)的更多相关文章
- Android QMUI实战:实现APP换肤功能,并自动适配手机深色模式
Android换肤功能已不是什么新鲜事了,市面上有很多第三方的换肤库和实现方案. 之所以选择腾讯的QMUI库来演示APP的换肤功能,主要原因: 1.换肤功能的实现过程较简单.容易理解: 2.能轻松适配 ...
- 一种简单的实现:Android一键换肤功能
现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,我把原作者的代码重新整理抽取出来,转换成Eclipse项目,重新整理成正确.可直接运行的项目. 代码运行结果如图. ...
- Android 换肤功能的实现(Apk插件方式)
一.概述 由于Android 没有提供一套统一的换肤机制,我猜可能是因为国外更注重功能和体验的原因 所以国内如果要做一个漂亮的换肤方案,需要自己去实现. 目前换肤的方法大概有三种方案: (1)把皮肤资 ...
- Android一键换肤功能:一种简单的实现
Android一键换肤功能:一种简单的实现 现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,这里有一个开源实现,我找了一大堆,发现这个项目相对较为简洁:htt ...
- Flex AIR应用换肤功能(Android和IOS)
说明 换肤功能,即将整个应用的皮肤都进行更换,其实质,是动态加载swf文件的过程,而这些swf文件则有css文件编译而来. 关于换肤功能,在android和ios系统的实现方式是不同的.主要原因,是因 ...
- React-Native 工程添加推送功能 (iOS 篇)
推送已经是是手机应用的基本功能,如果自己实现一套推送系统费时费力,所有一般我们会使用第三方的推送服务,这里我使用「极光推送」作为集成推送的例子,因为有现成的 react native 插件 jpush ...
- Android工程的编译过程
现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统.自动生成发布文件等等.这些都需要我们对Android工程的编译和打包有一个深入的理解,至少要知道它的每一步都做了什么,需要 ...
- 如何把一个android工程作为另外一个android工程的lib库
http://zhidao.baidu.com/question/626166873330652844 一个工程包含另一个工程.相当于一个jar包的引用.但又不是jar包反而像个package 在网上 ...
- 搭建Android工程的步骤及其第一个安卓程序
1.安卓系统架构 1>底层是Linux系统 2>函数库层 由C或C++写的 3>Application frameWork应用的框架层 4>顶层是应用层 2.JVM与DVM介绍 ...
随机推荐
- oracle在schema是什么意思?
看来有些人还在schema不明白的真正含义,今天,我再次整理.我希望能帮助. 我们先来看看它们的定义:A schema is a collection of database objects (use ...
- Vijos P1881 闪烁的星星 (加强自己多一点。。)
假设每次查询不是整个长度,但[x, y]此时间间隔. . 闲来无事写的,感觉是正确的.这将成为合并范围. #include <cstdio> #include <cstring> ...
- MVC Controller向View传值(ViewData与ViewBag)
近期在开发项目中,使用的是ASP.NET MVC因为之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习. 一:使用 ViewData使用: public ActionResult I ...
- SQLServer 网络协议(一)
SQLserver现在主要的3种协议:Shared Memory.TCP/IP 和 Named Pipe SharedMemory: Shared Memory最快最简单的协议,使用SharedMem ...
- WPF 引用DLL纯图像资源包类库中的图片
原文:WPF 引用DLL纯图像资源包类库中的图片 1.建立WPF应用程序 过程略. 2.创建类库项目(图片资源包) 创建图片资源类库项目MyImages,删除 ...
- 设计模式——工厂模式(Factory)
要想正确理解设计模式,首先必须明白它是为了解决什么问题而提出来的. 设计模式学习笔记 --Shulin 转载请注明出处:http://blog.csdn.net/zhshulin 1.概念 工厂模式定 ...
- org.apache.subversion.javahl.ClientException: svn: E155021: This client is too old to work with the
org.apache.subversion.javahl.ClientException: svn: E155021: This client is too old to work with the ...
- HR筒子说:程序猿面试那点事(转)
小屁孩曾经有过4年的招聘经验,期间见识了各种类型的程序猿:有大牛.有菜牛:有功成名就,有苦苦挣扎不知方向.等后来做了一枚程序猿之后发现,HR眼中的程序猿和程序猿中的HR都是不一样的.有感与此,从HR的 ...
- leetcode第一刷_Merge Sorted Array
水题,只是思想还是实用的. 当然能够新建出一个数组.比較着拷贝过去.可是没有必要啊亲.想想为什么用源数组会麻烦,由于确定了前面的数.为了后面的数字不被覆盖,要依次往后移,转念一想,先确定后面的数字.就 ...
- —页面布局实例———win7自己的小算盘
晚上7各地点布局,9点半,刚拿到. 他发现自己专注的时候效率挺高真的哈萨克斯坦.计算器布局前.做了两件简单的页面布局练练手.今晚总体感觉更好,不难. 器之间调试有点蛋疼,真心不想搭理IE. 在进行布局 ...