Android自定義控件實現(xiàn)萬能的對話框
自定義控件有段時間沒更新了,今天給大家?guī)硪粋€新的對話框樣式,本著用更少的代碼實現(xiàn)更豐富的功能。
由于對話框對用戶的操作有影響,所以目前app上的對話框用的已經(jīng)比較少了,但還是有一些比較重要的信息提示需要使用對話框的樣式,例如版本更新,賬戶異地登陸等。
下面來看自定義對話框的樣式:

圖1:自定義提示對話框

圖2:自定義警告對話框

圖3:默認提示對話框

圖4:默認警告對話框
這里面帶來了兩種對話框的樣式,也是比較常見的。以上所有的背景顏色,文字顏色,以及按鈕的點擊效果都是可以自定義的。
下面分別看看四種對話框是如何實現(xiàn)的
圖1:
DialogM.Builder builder = new DialogM.Builder(DialogMActivity.this)
.setTitle("發(fā)現(xiàn)新版本V5.4.1")
.setContent("Version5.4.1\n【更新默認表情】——同步最新表情,聊天更有趣\n" +
"【資料卡大升級】——全新視覺設計,增加陌生人來源信息\n" +
"【消息跳動優(yōu)化】——鼠標懸浮在消息列表上時順序不動,再也不怕點錯啦\n" +
"【收藏預覽升級】——完善圖片瀏覽體驗,優(yōu)化網(wǎng)頁預覽效果\n" +
"【更多體驗優(yōu)化】——群成員列表寬度可調;優(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完全使用了默認的顏色,我在代碼里指定了紅色為主色調。
所有的操作都是通過鏈式調用,可以根據(jù)自己app的風格隨意改變顏色。當然了你也可以把代碼下載下來增加更豐富的功能。
源碼比較長,有興趣的童鞋可以點擊這里查看。
源碼中采用了建造者模式,可以方便鏈式調用,使代碼看起來更簡潔。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android之IphoneTreeView帶組指示器的ExpandableListView效果
在正在顯示的最上面的組的標簽位置添加一個和組視圖完全一樣的視圖,作為組標簽。這個標簽的位置要隨著列表的滑動不斷變化,以保持總是顯示在最上方,并且該消失的時候就消失2013-06-06
Android通過SharedPreferences實現(xiàn)自動登錄記住用戶名和密碼功能
最近使用SharedPreferences實現(xiàn)了一個android自動登錄功能,特此分享到腳本之家平臺供大家參考2017-07-07
Android編程中沉浸式狀態(tài)欄的三種實現(xiàn)方式詳解
這篇文章主要介紹了Android編程中沉浸式狀態(tài)欄的三種實現(xiàn)方式,簡單描述了沉浸式狀態(tài)欄的概念、功能并結合實例形式詳細分析了Android實現(xiàn)沉浸式狀態(tài)欄的三種操作技巧與注意事項,需要的朋友可以參考下2018-02-02
TextVie獲取顯示字符串的寬度之Android開發(fā)
在項目開展過程中遇到問題要判斷textview是否需換行,要解決此問題首先判斷textview要顯示的字符串的寬度是否超過我設定的寬度,若超過則執(zhí)行換行,需要的朋友可以參考下2015-07-07
Android圖片添加水印圖片并把圖片保存到文件存儲的實現(xiàn)代碼
這篇文章主要介紹了Android圖片添加水印圖片并把圖片保存到文件存儲的實現(xiàn)代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06
Android開發(fā)實現(xiàn)模仿360二維碼掃描功能實例詳解
這篇文章主要介紹了Android開發(fā)實現(xiàn)模仿360二維碼掃描功能,結合實例形式詳細分析了Android開發(fā)二維碼掃描功能所涉及的zxing開源項目文件使用方法及具體掃碼功能相關實現(xiàn)技巧,需要的朋友可以參考下2017-10-10
flutter優(yōu)雅實現(xiàn)掃碼槍獲取數(shù)據(jù)源示例詳解
這篇文章主要為大家介紹了flutter優(yōu)雅實現(xiàn)掃碼槍獲取數(shù)據(jù)源示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Android實現(xiàn)狀態(tài)欄白底黑字效果示例代碼
這篇文章主要介紹了Android實現(xiàn)狀態(tài)欄白底黑字效果的相關資料,實現(xiàn)后的效果非常適合日常開發(fā)中使用,文中給出了詳細的示例代碼供大家參考學習,需要的朋友們下面隨著小編來一起學習學習吧。2017-10-10

