展会信息港展会大全

Apad Qzone项目总结--换肤功能实现
来源:互联网   发布日期:2016-01-13 21:39:22   浏览:2219次  

导读:Hi,大家好,今天给大家分享的是Apad Qzone换肤功能的实现,我们首先看下效果: 图1:默认的皮肤。 图2:点击菜单护肤按钮,应用更换皮肤。 通过上面的效果图可以看出Apad Qzone的换肤功能其实是很简单实......

Hi,大家好,今天给大家分享的是Apad Qzone换肤功能的实现,我们首先看下效果:

图1:默认的皮肤。

图2:点击菜单护肤按钮,应用更换皮肤。

通过上面的效果图可以看出Apad Qzone的换肤功能其实是很简单实现的,由于整个应用采取了单Activity实现方式,更换背景其实就是实现了更换主程序的Activity的背景。

这里我们事先把几套皮肤放在res/drawable目录里,然后用SharedPreferences来记录当前皮肤的资源id。然后在程序启动时加载Activity背景。

为了让大家更容易理解,我这里简单做了一个Demo,步骤分别如下:

第一步:新建一个Android工程命名为SkinDemo。程序结构如下:

第二步:新建一个皮肤管理类SkinSettingManager.java,代码如下:

01

package com.tutor.skindemo;

02

import android.app.Activity;

03

import android.content.SharedPreferences;

04

/**

05

* PadQzone皮肤管理器

06

* @author frankiewei

07

*

08

*/

09

public class SkinSettingManager {

10

public final static String SKIN_PREF = "skinSetting";

11

public SharedPreferences skinSettingPreference;

12

private int[] skinResources = { R.drawable.default_wallpaper,

13

R.drawable.wallpaper_c,R.drawable.wallpaper_d,R.drawable.wallpaper_f,

14

R.drawable.wallpaper_g

15

};

16

private Activity mActivity;

17

public SkinSettingManager(Activity activity) {

18

this.mActivity = activity;

19

skinSettingPreference = mActivity.getSharedPreferences(SKIN_PREF, 3);

20

}

21

/**

22

* 获取当前程序的皮肤序号

23

*

24

* @return

25

*/

26

public int getSkinType() {

27

String key = "skin_type";

28

return skinSettingPreference.getInt(key, 0);

29

}

30

/**

31

* 把皮肤序号写到全局设置里去

32

*

33

* @param j

34

*/

35

public void setSkinType(int j) {

36

SharedPreferences.Editor editor = skinSettingPreference.edit();

37

String key = "skin_type";

38

editor.putInt(key, j);

39

editor.commit();

40

}

41

/**

42

* 获取当前皮肤的背景图资源id

43

*

44

* @return

45

*/

46

public int getCurrentSkinRes() {

47

int skinLen = skinResources.length;

48

int getSkinLen = getSkinType();

49

if(getSkinLen >= skinLen){

50

getSkinLen = 0;

51

}

52

return skinResources[getSkinLen];

53

}

54

/**

55

* 用于导航栏皮肤按钮切换皮肤

56

*/

57

public void toggleSkins(){

58

int skinType = getSkinType();

59

if(skinType == skinResources.length - 1){

60

skinType = 0;

61

}else{

62

skinType ++;

63

}

64

setSkinType(skinType);

65

mActivity.getWindow().setBackgroundDrawable(null);

66

try {

67

mActivity.getWindow().setBackgroundDrawableResource(getCurrentSkinRes());

68

} catch (Throwable e) {

69

e.printStackTrace();

70

}

71

}

72

/**

73

* 用于初始化皮肤

74

*/

75

public void initSkins(){

76

mActivity.getWindow().setBackgroundDrawableResource(getCurrentSkinRes());

77

}

78

}

第三步:在应用的主Activity--即SkinDemoActivity.java调用,代码如下:

01

package com.tutor.skindemo;

02

import android.app.Activity;

03

import android.os.Bundle;

04

import android.view.MotionEvent;

05

public class SkinDemoActivity extends Activity {

06

private SkinSettingManager mSettingManager;

07

@Override

08

public void onCreate(Bundle savedInstanceState) {

09

super.onCreate(savedInstanceState);

10

setContentView(R.layout.main);

11

//初始化皮肤

12

mSettingManager = new SkinSettingManager(this);

13

mSettingManager.initSkins();

14

}

15

//这里为了简单实现,实现换肤

16

@Override

17

public boolean onTouchEvent(MotionEvent event) {

18

mSettingManager.toggleSkins();

19

return super.onTouchEvent(event);

20

}

21

}

以上三步就大功告成啦

赞助本站

人工智能实验室

相关热词: Apad Qzone 换肤 功能

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港