• 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

  • 相关阅读:
    XML 增、删、改和查示例
    DataGrid 完全攻略之三(实现删除全选或者全不选)
    DataGrid 完全攻略之七(实现选择、编辑和修改)
    ASP.NET 2.0,无刷新页面新境界
    DataGrid 完全攻略之二(把数据导出到Excel)
    ASP.NET 2.0角色及成员管理
    动态改变页面的CSS样式
    ASP.NET 2.0新控件、管理外观、布局及其它用户体验
    页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置?
    20100120 ~ 20100220 小结与本月计划
  • 原文地址:https://www.cnblogs.com/softidea/p/4864078.html
Copyright © 2020-2023  润新知