`
从此醉
  • 浏览: 1045509 次
  • 性别: Icon_minigender_1
  • 来自: US
社区版块
存档分类
最新评论

Apad Qzone项目总结(二)---换肤功能实现!!!

 
阅读更多

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皮肤管理器SkinDemo

    Apad Qzone的简单实现,供大家学习使用啊,哈哈哈,凑数字

    Apad Qzone(UI框架分享)

    供大家学习使用

    aPad应用:QQ HD全新推出mini版本.docx

    aPad应用:QQ HD全新推出mini版本.docx

    Apad-开源

    Apad文本编辑器是轻量级的开发人员编辑器。 它为大多数源文件提供语法高亮显示,可以打开大多数图像格式,并且可以显示Web文件。 在开始使用它之前,几乎不需要或不需要任何配置。

    ffmpeg最新版 windows版本 可以执行文件

    -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 ...

    apad:每天一个 (uVa) 问题

    apad:一天的问题该应用程序每天通过 uHunt API 从 CP3 问题列表中随机生成 uVa 问题。笔记如果通过 HTTPS 页面连接,到 uHunt 的连接将被浏览器阻止(虽然可以关闭),因为 uHunt 仅在 HTTP 连接中提供服务。 请...

    vscode-qq:VS Code QQ扩展

    暂时实现了一些最基础的功能,可用于上班时缓解工作压力摸鱼 在扩展市场搜索qq或在发行中下载。安装后点击状态栏里的按钮登录。需要安装chrome浏览器完成滑动验证码(若无chrome请根据提示手动操作)。如遇验证画画...

    飞创企业网站管理系统 1.1.rar

    一个网站等于多个网站 支持:PC电脑、Iphone手机 、Ipad平板电脑 ,Apad平板电脑,Android手机等多种移动设备正常访问。 产品特色: 1核心采用Thinkphp框架开发,MVC架构,灵活强大的功能扩展机制 2多种服务器...

    pad客户端持续集成方案

    描述iPad,aPad持续集成方案。包括构建打包,静态检测,自动安装,自动化测试,测试代码覆盖率统计分析。

    56网播放器

    56播放器安装包下载,56video_APad.apk

    Android 限制edittext 整数和小数位数 过滤器(详解)

    package allone.verbank.apad.client.component; import android.text.InputFilter; import android.text.Spanned; /** * * @Title: ComponentDigitCtrlFilter.java * @Package allone.verbank.apad.client....

    AsyPad:一个简单的绘图工具,可以将图表转换为渐近线代码

    AsyPad 一个简单的绘图工具,可以将图表转换为渐近线... 按⌘S/ Ctrl + S保存为AsyPad(.apad)文件。 按⌘Shift+ S / Ctrl + Shift + S保存为渐近线(.asy)文件。 按⌘O/ Ctrl + O加载AsyPad(.apad)文件。 撤消/

    RK2808 的 USB 驱动

    这是一个RK2808的USB 驱动软件,用于在国内板IPAD刷机前的驱动,试过在WIN7内运行不到,在XP内就完全顺利。

Global site tag (gtag.js) - Google Analytics