Android中實(shí)現(xiàn)動(dòng)態(tài)切換組件背景的操作

字號(hào):


    這個(gè)也是昨天學(xué)習(xí)用到的,總結(jié)下思路吧,因?yàn)檫@個(gè)知識(shí)點(diǎn)以后絕對(duì)會(huì)再次用到。
    目的:我要在軟件中動(dòng)態(tài)的選擇組件背景,系統(tǒng)皮膚,自定義吐司背景等。
    實(shí)現(xiàn)思路:要用到安卓中的SharedPrefence的功能,在設(shè)置里面寫一個(gè)控件,設(shè)置一個(gè)點(diǎn)擊監(jiān)聽器,點(diǎn)擊的時(shí)候顯示一個(gè)Alert選擇彈窗,讓你進(jìn)行選擇,對(duì)這個(gè)彈窗再設(shè)置一個(gè)點(diǎn)擊監(jiān)聽器(onItemListener),點(diǎn)擊到具體某個(gè)的時(shí)候,把對(duì)應(yīng)的點(diǎn)擊id保存到sahredprefence里面去,這樣,其他地方就可以從這里取得設(shè)置里選擇的值,進(jìn)行動(dòng)態(tài)個(gè)性化處理。
    具體代碼:
    設(shè)置選擇的操作:
    scv_setAddressBg.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
    int which = sp.getInt("which", 0);
    final String[] items = {"半透明","活力橙","衛(wèi)士藍(lán)","金屬灰","蘋果綠"};
    AlertDialog.Builder builder = new Builder(SettingActivity.this);
    builder.setTitle("設(shè)置歸屬地顯示背景");
    builder.setSingleChoiceItems(items, which, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
    Editor edit = sp.edit();
    edit.putInt("which", which);
    edit.commit();
    scv_setAddressBg.setDesc(items[which]);
    dialog.dismiss();
    }
    });
    builder.setNegativeButton("取消", null);
    builder.show();
    }
    });
    顯示自定義吐司的操作:
    public void showMyToast(String address) {
    <span>int[] ids = {R.drawable.call_locate_white,R.drawable.call_locate_orange,R.drawable.call_locate_blue
    ,R.drawable.call_locate_gray,R.drawable.call_locate_green};</span>
    <span>SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);
    int which = sp.getInt("which", 1);</span>
    view = View.inflate(this, R.layout.address_show, null);
    TextView textView = (TextView) view.findViewById(R.id.tv_address);
    textView.setText(address);
    <span>view.setBackgroundResource(ids[which]);</span>
    WindowManager.LayoutParams params = new WindowManager.LayoutParams();
    params.height = WindowManager.LayoutParams.WRAP_CONTENT;
    params.width = WindowManager.LayoutParams.WRAP_CONTENT;
    params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
    | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
    | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
    params.format = PixelFormat.TRANSLUCENT;
    params.type = WindowManager.LayoutParams.TYPE_TOAST;
    wm.addView(view, params);
    }
    總結(jié):
    1.要注意數(shù)組的應(yīng)用,ids[ value]這種使用方式要能想到用,將圖片資源文件寫在一個(gè)ids數(shù)組里是個(gè)很好的方式和想法。
    2.細(xì)心,獲得sp的時(shí)候名字寫錯(cuò)了,config寫成了congig。
    3.理解調(diào)試技巧是靠經(jīng)驗(yàn)和邏輯推理的,都很重要。