Android自定義控件實(shí)現(xiàn)萬能的對(duì)話框
自定義控件有段時(shí)間沒更新了,今天給大家?guī)硪粋€(gè)新的對(duì)話框樣式,本著用更少的代碼實(shí)現(xiàn)更豐富的功能。
由于對(duì)話框?qū)τ脩舻牟僮饔杏绊?,所以目前app上的對(duì)話框用的已經(jīng)比較少了,但還是有一些比較重要的信息提示需要使用對(duì)話框的樣式,例如版本更新,賬戶異地登陸等。
下面來看自定義對(duì)話框的樣式:
圖1:自定義提示對(duì)話框
圖2:自定義警告對(duì)話框
圖3:默認(rèn)提示對(duì)話框
圖4:默認(rèn)警告對(duì)話框
這里面帶來了兩種對(duì)話框的樣式,也是比較常見的。以上所有的背景顏色,文字顏色,以及按鈕的點(diǎn)擊效果都是可以自定義的。
下面分別看看四種對(duì)話框是如何實(shí)現(xiàn)的
圖1:
DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this) .setTitle("發(fā)現(xiàn)新版本V5.4.1") .setContent("Version5.4.1\n【更新默認(rèn)表情】——同步最新表情,聊天更有趣\n" + "【資料卡大升級(jí)】——全新視覺設(shè)計(jì),增加陌生人來源信息\n" + "【消息跳動(dòng)優(yōu)化】——鼠標(biāo)懸浮在消息列表上時(shí)順序不動(dòng),再也不怕點(diǎn)錯(cuò)啦\n" + "【收藏預(yù)覽升級(jí)】——完善圖片瀏覽體驗(yàn),優(yōu)化網(wǎng)頁預(yù)覽效果\n" + "【更多體驗(yàn)優(yōu)化】——群成員列表寬度可調(diào);優(yōu)化天氣定位策略;優(yōu)化圖片查看器") .setStyle(DialogM.STYLE_TIP) .setPositiveButton("更新", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(DialogMActivity.this, "submit", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(DialogMActivity.this, "cancel", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); builder.create().show();
圖2:
DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this) .setTitle("Hello") .setTitleBackColor(getResources().getColor(R.color.content)) .setTitleTextColor(getResources().getColor(R.color.mainColor)) .setAlertButtonBackColor(getResources().getColor(R.color.mainColor)) .setAlertButtonTextColor(getResources().getColor(android.R.color.white)) .setCanceledOnTouchOutside(false) .setAlertButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setContent("landptf"); builder.create().show();
圖3:
DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this) .setContent("landptf") .setStyle(DialogM.STYLE_TIP) .setPositiveButton("submit", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(DialogMActivity.this, "submit", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }) .setNegativeButton("cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(DialogMActivity.this, "cancel", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); builder.create().show();
圖4:
DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this) .setAlertButton("", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setContent("landptf"); builder.create().show();
圖3與圖4完全使用了默認(rèn)的顏色,我在代碼里指定了紅色為主色調(diào)。
所有的操作都是通過鏈?zhǔn)秸{(diào)用,可以根據(jù)自己app的風(fēng)格隨意改變顏色。當(dāng)然了你也可以把代碼下載下來增加更豐富的功能。
源碼比較長,有興趣的童鞋可以點(diǎn)擊這里查看。
源碼中采用了建造者模式,可以方便鏈?zhǔn)秸{(diào)用,使代碼看起來更簡潔。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android RecyclerView的卡頓問題的解決方法
本篇文章主要介紹了Android RecyclerView的卡頓問題的解決方法,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04Android來電監(jiān)聽和去電監(jiān)聽實(shí)現(xiàn)代碼
本文是關(guān)于來點(diǎn)監(jiān)聽和去電監(jiān)聽展開問題,通過實(shí)例代碼講解,對(duì)android來電監(jiān)聽和去電監(jiān)聽的相關(guān)知識(shí)感興趣的朋友一起看看吧2017-06-06Android AIDL實(shí)現(xiàn)進(jìn)程間通信探索
這篇文章主要為大家詳細(xì)介紹了Android AIDL實(shí)現(xiàn)進(jìn)程間通信的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09android自定義控件和自定義回調(diào)函數(shù)步驟示例
這篇文章主要介紹了android自定義控件步驟示例,包括為View類增加屬性、響應(yīng)用戶消息、自定義回調(diào)函數(shù)等方法2014-01-01Flutter實(shí)現(xiàn)編寫富文本Text的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何通過Flutter實(shí)現(xiàn)編寫富文本Text,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-11-11Android組件化工具ARouter使用方法詳細(xì)分析
這篇文章主要介紹了Android組件化工具ARouter使用方法,組件化項(xiàng)目存在各個(gè)模塊之間耦合,通信麻煩的問題,為了解決這個(gè)問題,阿里巴巴的開發(fā)者就搞出了Arouter這個(gè)框架,以解決上述問題2022-10-10