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介绍 ...
随机推荐
- javascript---在自由落体实现
实现一些简单的物业自由落体需要理解: clientHeight:浏览器客户机的整体高度 offsetHeight:物(实例div)高低 offsetTop:从对象client最顶层的距离 简单demo ...
- 将本地文件上传到指定的服务器(HttpWebRequest方法)
将本地文件上传到指定的服务器(HttpWebRequest方法),通过文件流,带文件名,同文件一同上传的表单文本域及值. ///<summary> /// 将本地文件上传到指定的服务器(H ...
- 使用Spring的@Autowired 实现DAO, Service, Controller三层的注入(转)
简述: 结合Spring和Hibernate进行开发 使用@Autowired实现依赖注入, 实现一个学生注册的功能,做一个技术原型 从DAO(Repository) -> Service -& ...
- android手机SD卡中的android_secure目录
.android_secure 是官方app2sd的产物,删了之后装到sd卡中的软件就无法使用了.里面有非常多.asec的文件,都是装到SD卡上的软件,可是一般装到sd卡中的程序被卸载了.androi ...
- [2014 Regional]牡丹江 H Hierarchical Notation 做题记录
主妇:老年人谁是炮灰牡丹江,我们的团队只是做同步大赛 他决定开爆震H什么时候,A 5min 1Y.I在该限制后,纠结了很久30min+ 1Y,神继续承担各种位置卡D在,hpp见B我认为这是非常熟悉的研 ...
- J2SE习题(2)
第四.五周练习题 1.a. Define a class called BlogEntry that could be used to store an entry for a Weblog. Th ...
- 【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张
自从苹果宣布swift之后,我一直想了解,他一直没有能够把它的正式学习,从今天开始,我会用我的博客来驱动swift得知,据我们了解还快. 1.定义变量和常量 var 定义变量,let定义常量. 比如 ...
- 用Jstack跟踪Cpu占用率的Java线程(转)
以下方法在centOS下执行通过:1.先定位占用cpu高的进程 top 2.使用以下命令 ps p 14766 -L -o pcpu,pid,tid,time,tname,stat,psr | sor ...
- 【Linux】lvm基础操作
新增两块硬盘,来进行实验: [root@jp ~]# fdisk -l Disk /dev/sda: 107.3 GB, 107374182400 bytes 255 heads, 63 sector ...
- maven/eclipse搭建ssm(spring+spring mvc+mybatis)
maven/eclipse搭建ssm(spring+spring mvc+mybatis) 前言 本文旨在利用maven搭建ssm环境,而关于maven的具体内容,大家可以去阅读<Maven 实 ...