Apad Qzone项目总结(二)---换肤功能实现!!!
2011-12-30 21:00
281 查看
Hi,大家好,快元旦啦,提前祝大家元旦快乐,(*^__^*) 嘻嘻,今天给大家分享的是Apad Qzone换肤功能的实现,我们首先看下效果:
图1:默认的皮肤.
图2:点击菜单护肤按钮,应用更换皮肤.
通过上面的效果图可以看出Apad Qzone的换肤功能其实是很简单实现的,由于整个应用采取了单Activity实现方式,更换背景其实就是实现了更换主程序的Activity的背景。
这里我们事先把几套皮肤放在res/drawable目录里,然后用SharedPreferences来记录当前皮肤的资源id.然后在程序启动时加载Activity背景。
为了让大家更容易理解,我这里简单做了一个Demo,步骤分别如下:
第一步:新建一个Android工程命名为SkinDemo.程序结构如下:
第二步:新建一个皮肤管理类SkinSettingManager.java,代码如下:
以上三步就大功告成啦!,哈哈,很容易吧,今天就讲到这里,提前祝大家元旦快乐!!!
源代码点击进入==>
图1:默认的皮肤.
图2:点击菜单护肤按钮,应用更换皮肤.
通过上面的效果图可以看出Apad Qzone的换肤功能其实是很简单实现的,由于整个应用采取了单Activity实现方式,更换背景其实就是实现了更换主程序的Activity的背景。
这里我们事先把几套皮肤放在res/drawable目录里,然后用SharedPreferences来记录当前皮肤的资源id.然后在程序启动时加载Activity背景。
为了让大家更容易理解,我这里简单做了一个Demo,步骤分别如下:
第一步:新建一个Android工程命名为SkinDemo.程序结构如下:
第二步:新建一个皮肤管理类SkinSettingManager.java,代码如下:
package com.tutor.skindemo; import android.app.Activity; import android.content.SharedPreferences; /** * PadQzone皮肤管理器 * @author frankiewei * */ public class SkinSettingManager { public final static String SKIN_PREF = "skinSetting"; public SharedPreferences skinSettingPreference; private int[] skinResources = { R.drawable.default_wallpaper, R.drawable.wallpaper_c,R.drawable.wallpaper_d,R.drawable.wallpaper_f, R.drawable.wallpaper_g }; private Activity mActivity; public SkinSettingManager(Activity activity) { this.mActivity = activity; skinSettingPreference = mActivity.getSharedPreferences(SKIN_PREF, 3); } /** * 获取当前程序的皮肤序号 * * @return */ public int getSkinType() { String key = "skin_type"; return skinSettingPreference.getInt(key, 0); } /** * 把皮肤序号写到全局设置里去 * * @param j */ public void setSkinType(int j) { SharedPreferences.Editor editor = skinSettingPreference.edit(); String key = "skin_type"; editor.putInt(key, j); editor.commit(); } /** * 获取当前皮肤的背景图资源id * * @return */ public int getCurrentSkinRes() { int skinLen = skinResources.length; int getSkinLen = getSkinType(); if(getSkinLen >= skinLen){ getSkinLen = 0; } return skinResources[getSkinLen]; } /** * 用于导航栏皮肤按钮切换皮肤 */ public void toggleSkins(){ int skinType = getSkinType(); if(skinType == skinResources.length - 1){ skinType = 0; }else{ skinType ++; } setSkinType(skinType); mActivity.getWindow().setBackgroundDrawable(null); try { mActivity.getWindow().setBackgroundDrawableResource(getCurrentSkinRes()); } catch (Throwable e) { e.printStackTrace(); } } /** * 用于初始化皮肤 */ public void initSkins(){ mActivity.getWindow().setBackgroundDrawableResource(getCurrentSkinRes()); } }第三步:在应用的主Activity--即SkinDemoActivity.java调用,代码如下:
package com.tutor.skindemo; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; public class SkinDemoActivity extends Activity { private SkinSettingManager mSettingManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //初始化皮肤 mSettingManager = new SkinSettingManager(this); mSettingManager.initSkins(); } //这里为了简单实现,实现换肤 @Override public boolean onTouchEvent(MotionEvent event) { mSettingManager.toggleSkins(); return super.onTouchEvent(event); } }
以上三步就大功告成啦!,哈哈,很容易吧,今天就讲到这里,提前祝大家元旦快乐!!!
源代码点击进入==>
相关文章推荐
- Apad Qzone项目总结(二)---换肤功能实现!!!
- Apad Qzone项目总结(二)---换肤功能实现!!!
- Apad Qzone项目总结(二)---换肤功能实现!!!
- Apad Qzone项目总结(二)---换肤功能实现!!!
- Apad Qzone项目总结(一)---发布!!!
- OA项目 分页功能总结二 实现较为复杂的分页功能(资料来源于传智播客汤阳光的视频教程)
- 简笔画项目总结: ios绘图机制 & 实现记录笔迹功能
- (基本功能全部实现)HuaXinIM聊项目阶段总结八(表情发送与远程监控的实现)
- baler项目总结-Java调用Jenkins Resetful API实现build功能
- 利用CSS预处理技术实现项目换肤功能-(less css+asp.net mvc bundle)
- HuaXinIM聊项目阶段总结五(聊天功能实现)
- 利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)
- android实现换肤功能的方法总结
- 小白马卫士项目总结之防盗功能的实现
- HuaXinIM聊项目阶段总结三(登录注册功能实现)
- Apad Qzone项目总结(一)---发布!!!
- C++实现WEB功能方法总结
- Android 换肤功能实现
- 【SSH网上商城项目实战11】查询和删除商品功能的实现
- 木雨音乐 项目开发(五)Service服务实现播放等功能