Android實(shí)現(xiàn)動(dòng)態(tài)切換組件背景的方法
本文所述的程序?qū)崿F(xiàn)的功能為在軟件中動(dòng)態(tài)的選擇組件背景,系統(tǒng)皮膚,自定義吐司背景等。
為實(shí)現(xiàn)這一要求,就需要用到安卓中的SharedPrefence的功能,首先在設(shè)置里面寫(xiě)一個(gè)控件,設(shè)置一個(gè)點(diǎn)擊監(jiān)聽(tīng)器,點(diǎn)擊的時(shí)候顯示一個(gè)Alert選擇彈窗,讓你進(jìn)行選擇,對(duì)這個(gè)彈窗再設(shè)置一個(gè)點(diǎn)擊監(jiān)聽(tīng)器(onItemListener),點(diǎn)擊到具體某個(gè)的時(shí)候,把對(duì)應(yīng)的點(diǎn)擊id保存到sahredprefence里面去,這樣,其他地方就可以從這里取得設(shè)置里選擇的值,進(jìn)行動(dòng)態(tài)個(gè)性化處理。
具體代碼如下:
1.設(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)","金屬灰","蘋(píng)果綠"};
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();
}
});
2.顯示自定義吐司的操作:
public void showMyToast(String address) {
<span style="color:#ff6600;">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 style="color:#ff6600;">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 style="color:#ff6600;">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);
}
3.歸納總結(jié)如下:
(1)要注意數(shù)組的應(yīng)用,ids[ value]這種使用方式要能想到用,將圖片資源文件寫(xiě)在一個(gè)ids數(shù)組里是個(gè)很好的方式和想法。
(2)細(xì)心,獲得sp的時(shí)候名字寫(xiě)錯(cuò)了,config寫(xiě)成了configs。
(3)理解調(diào)試技巧是靠經(jīng)驗(yàn)和邏輯推理的,都很重要。
相關(guān)文章
Android自定義漸變式炫酷ListView下拉刷新動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android自定義漸變式炫酷ListView下拉刷新動(dòng)畫(huà),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android App中ViewPager與Fragment結(jié)合的一些問(wèn)題解決
這篇文章主要介紹了Android App中ViewPager與Fragment結(jié)合的一些問(wèn)題解決,重點(diǎn)講解了如何更新及替換ViewPager中的Fragment,需要的朋友可以參考下2016-03-03
Android仿淘寶首頁(yè)頭條View垂直滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Android仿淘寶首頁(yè)頭條View垂直滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Android中使用Bitmap類(lèi)將矩形圖片轉(zhuǎn)為圓形的方法
這篇文章主要介紹了Android中使用Bitmap類(lèi)將矩形圖片轉(zhuǎn)為圓形的方法,同時(shí)文中也介紹了如何利用矩形直接來(lái)畫(huà)圓角,需要的朋友可以參考下2016-03-03
gradle配置國(guó)內(nèi)鏡像的實(shí)現(xiàn)
這篇文章主要介紹了gradle配置國(guó)內(nèi)鏡像的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Android中Listview下拉刷新和上拉加載更多的多種實(shí)現(xiàn)方案
本文大概通過(guò)三種方案給大家介紹了Android中Listview下拉刷新和上拉加載更多知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2016-12-12
Android 7.0 Nougat不得不知的11項(xiàng)新功能
不得不知的11項(xiàng)Android 7.0 Nougat新功能,感興趣的小伙伴們可以參考一下2016-09-09
Android Studio 中運(yùn)行 groovy 程序的方法圖文詳解
這篇文章主要介紹了Android Studio 中 運(yùn)行 groovy 程序的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Android百度地圖應(yīng)用開(kāi)發(fā)基礎(chǔ)知識(shí)
這篇文章主要為大家詳細(xì)介紹了Android百度地圖應(yīng)用開(kāi)發(fā)基礎(chǔ)知識(shí),為開(kāi)發(fā)百度地圖應(yīng)用做準(zhǔn)備,感興趣的小伙伴們可以參考一下2016-06-06

