Hi,大家好,快元旦啦,提前祝大家元旦快乐,(*^__^*) 嘻嘻,今天给大家分享的是Apad Qzone换肤功能的实现,我们首先看下效果:

图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(UI框架分享)】是一个专为Apad设备设计的用户界面框架,它提供了丰富的组件和交互模式,旨在提升用户体验并简化开发者的工作。这个框架可能包含了多个组件库、样式表、交互脚本以及示例代码,帮助开发者...
这个项目旨在简化用户对Qzone皮肤的操作,提升用户在平板设备(Apad)上使用QQ空间的视觉效果和交互体验。 在Android开发中,皮肤管理器通常涉及以下几个核心知识点: 1. **资源管理**:Android应用的皮肤本质上是...
由于Apad是开源项目,因此它背后有一个活跃的开发者和用户社区。这个社区不断贡献新的插件、主题和改进,确保软件始终与时俱进。用户可以通过论坛、邮件列表或者GitHub等平台寻求帮助、分享经验,或者参与到Apad的...
这一功能对于远程工作、学习和家庭互动来说尤其实用,实现了异地之间的“零”距离沟通。 2. **音乐播放功能**: 在这两个新版本中,音乐功能得到了整合,用户可以在聊天的同时轻松享受音乐。音乐播放支持后台操作...
-apad audio pad -frames number set the number of frames to output -filter filter_graph set stream filtergraph -filter_script filename read stream filtergraph description from a file -reinit_filter ...
- **选择题第十题**:“Aͳ”至“DʾӡƱ”可能是指在Visual Basic中实现的特定功能,如数据库操作。 #### 6. Visual Basic 特性 - **选择题第十一题**:“Aṹ”至“DԼ”可能涉及Visual Basic编程语言的特点或特性...
apad:一天的问题该应用程序每天通过 uHunt API 从 CP3 问题列表中随机生成 uVa 问题。笔记如果通过 HTTPS 页面连接,到 uHunt 的连接将被浏览器阻止(虽然可以关闭),因为 uHunt 仅在 HTTP 连接中提供服务。 请...
最新LinPay码支付 免签支付系统源码 免授权版本 服务集成商兼容市面所有易支付,兼容所有商城LinPay是专为个人站长打造的聚合免签系统,拥有卓越的性能和丰富的功能。...4.aPad自建云端 5.QQ最新框架协议永不掉线
暂时实现了一些最基础的功能,可用于上班时缓解工作压力摸鱼 在扩展市场搜索qq或在发行中下载。安装后点击状态栏里的按钮登录。需要安装chrome浏览器完成滑动验证码(若无chrome请根据提示手动操作)。如遇验证画画...
LinPay码支付是2024年8月25日上线的一款新码支付,属于第四方支付不需要支付许可证云拍照,服务集成商兼容市面所有易支付,兼容所有商城LinPay是专为个人站长打造的聚合免签系统,拥有卓越的性能和丰富的功能。...
厌氧消化工艺有多种类型,如常规中温厌氧消化、单级高效中温厌氧消化、两级厌氧消化和中温/高温两相厌氧消化(APAD)。每个工艺都有其独特的优势和适用条件,例如,温度、有机物投入量、营养、粒度、搅拌、平均滞留...
一个网站等于多个网站 支持:PC电脑、Iphone手机 、Ipad平板电脑 ,Apad平板电脑,Android手机等多种移动设备正常访问。 产品特色: 1核心采用Thinkphp框架开发,MVC架构,灵活强大的功能扩展机制 2多种服务器...
描述iPad,aPad持续集成方案。包括构建打包,静态检测,自动安装,自动化测试,测试代码覆盖率统计分析。
56播放器安装包下载,56video_APad.apk
属于第四方支付不需要支付许可证云拍照,服务集成商兼容市面所有易支付,兼容所有商城LinPay是专为个人站长打造的聚合免签系统,拥有卓越的性能和丰富的功能。...4.aPad自建云端 5.QQ最新框架协议永不掉线
package allone.verbank.apad.client.component; import android.text.InputFilter; import android.text.Spanned; /** * * @Title: ComponentDigitCtrlFilter.java * @Package allone.verbank.apad.client....
AsyPad 一个简单的绘图工具,可以将图表转换为渐近线... 按⌘S/ Ctrl + S保存为AsyPad(.apad)文件。 按⌘Shift+ S / Ctrl + Shift + S保存为渐近线(.asy)文件。 按⌘O/ Ctrl + O加载AsyPad(.apad)文件。 撤消/
这是一个RK2808的USB 驱动软件,用于在国内板IPAD刷机前的驱动,试过在WIN7内运行不到,在XP内就完全顺利。