android 简单的更换皮肤

更换皮肤

1.更换皮肤其实就是更换Activity的背景图片

直接上代码:

Activity:

 1 public class MainActivity extends Activity implements OnClickListener {
 2
 3     private SkinManager skinManager;
 4     private int downNums;
 5     private Button btn;
 6
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main);
11         skinManager = new SkinManager(this);
12         skinManager.init();
13         btn = (Button) findViewById(R.id.btn_skin);
14         btn.setOnClickListener(this);
15     }
16
17     /**
18      * 背景切换
19      */
20     @Override
21     public boolean onTouchEvent(MotionEvent event) {
22         switch (event.getAction()) {
23         case MotionEvent.ACTION_DOWN:
24             downNums++;
25             skinManager.toggleSkin(downNums % 5);
26             break;
27
28         }
29
30         return super.onTouchEvent(event);
31     }
32
33     /**
34      * 点击后弹出主题选择框,也就是选择图片
35      */
36     @Override
37     public void onClick(View v) {
38
39         switch (v.getId()) {
40         case R.id.btn_skin:
41             GridView grid = new GridView(this);
42             List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
43             HashMap<String, Object> map = new HashMap<String, Object>();
44             map.put("imgID", R.drawable.default_wallpaper);
45             list.add(map);
46             HashMap<String, Object> map1 = new HashMap<String, Object>();
47             map.put("imgID", R.drawable.wallpaper_c);
48             list.add(map1);
49             SimpleAdapter adapter = new SimpleAdapter(this, list,
50                     R.layout.item, new String[] { "imgID" },
51                     new int[] { R.id.image });
52             grid.setAdapter(adapter);
53             new AlertDialog.Builder(this).setTitle("选择图片").setView(grid)
54                     .create().show();
55             break;
56
57         }
58     }
59 }

activity_main.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context=".MainActivity" >
 7
 8     <TextView
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:text="@string/hello_world" />
12
13     <Button
14         android:id="@+id/btn_skin"
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:text="皮肤选择" />
18
19 </LinearLayout>

item.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6
 7     <ImageView
 8         android:id="@+id/image"
 9         android:layout_width="70dp"
10         android:layout_height="70dp" />
11
12 </LinearLayout>

SkinManager.class

 1 public class SkinManager {
 2
 3     private String spName = "skin_storage";
 4
 5     private SharedPreferences sp;
 6
 7     private Activity activity;
 8
 9     private int drawableArray[] = { R.drawable.default_wallpaper,
10             R.drawable.wallpaper_c, R.drawable.wallpaper_d,
11             R.drawable.wallpaper_f, R.drawable.wallpaper_g };
12
13     public SkinManager(Activity activity) {
14         this.activity = activity;
15         sp = activity.getSharedPreferences(spName, 0);
16     }
17
18     /**
19      * 保存皮肤ID
20      */
21     private void saveImgID(int ID) {
22         String editorName = "skinID";
23         SharedPreferences.Editor editor = sp.edit();
24         editor.putInt(editorName, ID);
25         editor.commit();
26     }
27
28     /**
29      * 获取当前皮肤
30      */
31     private int getCurrentImgID() {
32         String editorName = "skinID";
33         return sp.getInt("skinID", R.drawable.default_wallpaper);
34
35     }
36
37     public void toggleSkin(int i) {
38         try {
39             activity.getWindow()
40                     .setBackgroundDrawableResource(drawableArray[i]);
41         } catch (Exception e) {
42         }
43     }
44
45     public void init() {
46
47         activity.getWindow().setBackgroundDrawableResource(drawableArray[0]);
48     }
49
50 }

效果图:

源码下载

时间: 2024-08-03 05:22:23

android 简单的更换皮肤的相关文章

Android更换皮肤解决方案

Android更换皮肤解决方案 转载请注明出处:IT_xiao小巫 本篇博客要给大家分享的一个关于Android应用换肤的Demo,大家可以到我的github去下载demo,以后博文涉及到的代码均会上传到github中统一管理. github地址:https://github.com/devilWwj/Android-skin-update 思路 换肤功能一般有什么? 元素一般有背景颜色.字体颜色.图片.布局等等 我们知道Android中有主题Theme还有style,theme是针对整个act

apk分享: Android应用更换皮肤功能的实现思路教程。

Android 的发展确实太快了,每年的都有很多新东西出现,想要覆盖所有新东西感觉也不太可能,我这里主要说一下主要的 Android 的主要新技术发展,其实了解 Android 的发展趋势,可能对开发者更有帮助. 开发工具 Android Studio: Google 官方放弃 Eclipse 和 Android Studio 普及.AS 虽然不算新,但是对 Android Studio 这个软件的更新速度快的惊人,有大量的新功能发布.例如支持很多注解代码提示注解.Live code templ

android 简单文件操作

1.布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orient

Android简单登陆页面

布局: 线性布局+相对布局 日志打印: 利用LogCat和System.out.println打印观察. Onclick事件是采用过的第四种: 在配置文件中给Button添加点击时间 涉及知识: 通过上线文context获得文件的路径和缓存路径,保存文件 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

Android简单的分享笔记

http://blog.csdn.net/xyz_lmn/article/details/16856843 采用Intent隐式调用Activity的方法,主要使用Intent.ACTION_SEND和Intent.createChooser(); 调用Android系统的分享接口.系统会过滤手机上的具有分享应用的程序,让用户进行选择.如果没有使用Intent.createChooser()则会取系统默认的用户分享方式,只有未设置的情况下才会弹出让用户进行选择. 1.简单的分享文本 1 Inte

Android简单的handler处理

1 package com.example.androidprojecttest; 2 3 import android.os.Bundle; 4 import android.os.Handler; 5 import android.os.Message; 6 import android.os.Messenger; 7 import android.R.id; 8 import android.app.Activity; 9 import android.content.Intent; 10

visual studio 2012更换皮肤、功能添加

首先在vs2012的菜单:工具->扩展和更新,打开扩展和更新窗口,点击左侧“联机”,搜索栏里面输入Theme Editor.然后点击按钮,安装之后,在工具->选项->环境常规 面板上面颜色主题下拉框,就可以选择换肤了.附图 visual studio 2012更换皮肤.功能添加

Android简单封装类似JQuery异步请求

在android开发中经常会使用异步请求数据,通常会使用handler或者AsyncTask去做,handler 配合message 使用起来比较麻烦,AsyncTask 线程池只允许128个线程工作,会有溢出的问题,(当然一般情况不会有那么多线程同时工作的)所以写了这个代码,还望高手指正! [Java]代码 01 package com.xbl.task; 02 03 import java.io.BufferedReader; 04 import java.io.InputStream; 0

android 简单的登录

一直都知道WEB通过登录后session拿着回答,如今,安卓不知道怎么弄的. 研究了一下,它记录.直接在代码: server结束: index.jsp <%@page import="java.io.PrintWriter"%> <%@page import="com.sun.org.apache.xml.internal.serialize.Printer"%> <%@page import="com.google.gson