天天看點

android工程實作換桌面功能(轉)

最近工作要實作換桌面小功能,将代碼做成demo發出來

沒有采用zip格式換膚,因為隻是更換一張圖檔背景

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

2.用sharedPreference存取皮膚的id,以便于下次啟動的時候根據id來選擇用哪個皮膚,在onresume()裡重新整理皮膚

3.存到sharedPreference的資料采用string,不能采用圖檔的id,因為圖檔的id是每次程式啟動後又會重新生成的

不多說了直接上,代碼

public class ChangeSkinActivity extends Activity {  

    private static final String SKIN_ID = "skin_id";  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);  

        setContentView(R.layout.main);  

        Button btnChangeSkin = (Button) findViewById(R.id.btnChangeSkin);  

        btnChangeSkin.setOnClickListener(new View.OnClickListener() {  

            @Override  

            public void onClick(View v) {  

                if ("bg0".equals(getSkinResourceName())) {  

                    setSkinResourceName("bg1");  

                }else if ("bg1".equals(getSkinResourceName())) {  

                    setSkinResourceName("bg2");  

                }else if ("bg2".equals(getSkinResourceName())) {  

                    setSkinResourceName("bg0");  

                }  

                refreshSkin();  

            }  

        });  

    }  

    protected void onResume() {  

        super.onResume();  

        refreshSkin();  

    /** 

     * 更換皮膚 

     * 1.點選更換皮膚快捷菜單後 

     * 2.程式運作起來後 

     */  

    private void refreshSkin() {  

        int skinId = getSkinResourceId();  

        findViewById(R.id.layout).setBackgroundResource(skinId);  

    private int getSkinResourceId(){  

        int skinId = R.drawable.bg0;  

        String skinName=getSkinResourceName();  

        if(skinName.equals("bg1")){  

            skinId = R.drawable.bg1;  

        } else if(skinName.equals("bg2")){  

            skinId = R.drawable.bg2;  

        }  

        return skinId;  

    private String getSkinResourceName() {  

        try {  

            SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);  

            return preferences.getString(SKIN_ID, "bg0");  

        } catch (Exception e) {  

            e.printStackTrace();  

            return  "bg0";  

    private void setSkinResourceName(String skinName) {  

        SharedPreferences preferences = getSharedPreferences("skinxml", Context.MODE_PRIVATE);  

        Editor editor =  preferences.edit();  

        editor.putString(SKIN_ID, skinName);  

        editor.commit();  

}  

然後上效果

android工程實作換桌面功能(轉)
android工程實作換桌面功能(轉)
android工程實作換桌面功能(轉)

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

繼續閱讀