android工程实现换壁纸功能(转)

最近工作要实现换壁纸小功能,将代码做成demo发出来

没有采用zip格式换肤,因为只是更换一张图片背景

1.将三张图放入drawable-hdpi,我放的是480*800的

2.用sharedPreference存取皮肤的id,以便于下次启动的时候根据id来选择用哪个皮肤,在onresume()里刷新皮肤

3.存到sharedPreference的数据采用string,不能采用图片的id,因为图片的id是每次程序启动后又会重新生成的

不多说了直接上,代码

[java] view plaincopy
 
  1. public class ChangeSkinActivity extends Activity {  
  2.     private static final String SKIN_ID = "skin_id";  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         this.requestWindowFeature(Window.FEATURE_NO_TITLE);  
  7.         setContentView(R.layout.main);  
  8.         Button btnChangeSkin = (Button) findViewById(R.id.btnChangeSkin);  
  9.         btnChangeSkin.setOnClickListener(new View.OnClickListener() {  
  10.               
  11.             @Override  
  12.             public void onClick(View v) {  
  13.                 if ("bg0".equals(getSkinResourceName())) {  
  14.                     setSkinResourceName("bg1");  
  15.                 }else if ("bg1".equals(getSkinResourceName())) {  
  16.                     setSkinResourceName("bg2");  
  17.                 }else if ("bg2".equals(getSkinResourceName())) {  
  18.                     setSkinResourceName("bg0");  
  19.                 }  
  20.                 refreshSkin();  
  21.             }  
  22.         });  
  23.     }  
  24.     @Override  
  25.     protected void onResume() {  
  26.         super.onResume();  
  27.         refreshSkin();  
  28.     }  
  29.     /** 
  30.      * 更换皮肤 
  31.      * 1.点击更换皮肤快捷菜单后 
  32.      * 2.程序运行起来后 
  33.      */  
  34.     private void refreshSkin() {  
  35.         int skinId = getSkinResourceId();  
  36.         findViewById(R.id.layout).setBackgroundResource(skinId);  
  37.     }  
  38.     private int getSkinResourceId(){  
  39.         int skinId = R.drawable.bg0;  
  40.         String skinName=getSkinResourceName();  
  41.         if(skinName.equals("bg1")){  
  42.             skinId = R.drawable.bg1;  
  43.         } else if(skinName.equals("bg2")){  
  44.             skinId = R.drawable.bg2;  
  45.         }  
  46.         return skinId;  
  47.     }  
  48.     private String getSkinResourceName() {  
  49.         try {  
  50.             SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);  
  51.             return preferences.getString(SKIN_ID, "bg0");  
  52.         } catch (Exception e) {  
  53.             e.printStackTrace();  
  54.             return  "bg0";  
  55.         }  
  56.     }  
  57.     private void setSkinResourceName(String skinName) {  
  58.         SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);  
  59.         Editor editor =  preferences.edit();  
  60.         editor.putString(SKIN_ID, skinName);  
  61.         editor.commit();  
  62.     }  
  63. }  


然后上效果

下载地址:http://download.csdn.net/detail/ethan_xue/4413167

http://blog.csdn.net/ethan_xue/article/details/7720177

原文地址:https://www.cnblogs.com/softidea/p/4864078.html