android 自定義dialog_Dialog 使用詳解
技術標籤:android 自定義dialogdialogfragment 使用vant dialog中顯示list自定義dialog
和你一起終身學習,這裡是程式設計師Android
經典好文推薦,通過閱讀本文,您將收穫以下知識點:
一、Dialog 簡介
二、Dialog 基本樣式解析
三、簡單對話方塊的實現
四、多選按鈕對話方塊
五、單選按鈕對話方塊
六、列表對話方塊
七、水平進度條對話方塊
八、圓形進度條對話方塊
九、自定義圖文對話方塊
十、自定義輸入對話方塊
十一、自定義樣式對話方塊
十二、自定義Loading樣式對話方塊
十三、繼承 DialogFragment 實現對話方塊
十四、Activity形式的 對話方塊十五、倒計時 30s Dialog實現
一、Dialog 簡介
在學習Dialog 之前,我們先了解一下Dialog的基礎關係。
Dialog的繼承關係如下:
java.lang.Object
↳ android.app.Dialog
Dialog
是Android
常用控制元件之一,主要以彈出框的形式與使用者進行互動。對話方塊是提示使用者作出決定或輸入額外資訊的小視窗。對話方塊不會填充螢幕,通常用於需要使用者採取行動才能繼續執行的模式事件。
二、 Dialog 基本樣式解析
Dialog 基本樣式
1.標題
這是可選項,只應在內容區域被詳細訊息、列表或自定義佈局佔據時使用。如需陳述的是一條簡單訊息或問題(如圖 上圖中的對話方塊),則不需要標題。
2.內容區域
它可以顯示訊息、列表或其他自定義佈局。
3.操作按鈕
對話方塊中的操作按鈕不應超過三個。
三、簡單對話方塊的實現
1.實現效果:
簡單對話方塊
2.實現程式碼如下:
/**
* 簡單對話方塊
*/
四、多選按鈕對話方塊
1.實現效果:
多選按鈕對話方塊
2.實現程式碼:
/**
* 多選按鈕對話方塊
* */
五、單選按鈕對話方塊
1.實現效果:
單選按鈕對話方塊
2.實現程式碼如下:
/**
* 單選按鈕對話方塊實現
**/
public void SingleChoiceDialog(View view) {
final String font[] = { "小號字型", "中號字型", "大號字型", "超大號字型" };
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("單選對話方塊")
.setIcon(R.drawable.ic_launcher)
.setSingleChoiceItems(font, 0,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
Toast.makeText(DiaLogMethods.this,
"選擇的字型為:" + font[which],
Toast.LENGTH_SHORT).show();
dialog.dismiss();
}
}).setPositiveButton("OK", null)
.setNegativeButton("Cancle", null).create().show();
}
六、列表對話方塊
1.實現效果如下:
列表對話方塊
2.實現程式碼如下:
/**
* 列表對話方塊實現
**/
七、水平進度條對話方塊
1.實現效果如下:
水平進度條對話方塊
2.實現程式碼如下:
/**
* 水平進度條對話方塊實現
**/
@SuppressWarnings("deprecation")
public void HorProgressDialog(View view) {
final ProgressDialog progressDialog = new ProgressDialog(
DiaLogMethods.this);
progressDialog.setTitle("進度對話方塊");
progressDialog.setIcon(R.drawable.ic_launcher);
progressDialog.setMessage("載入中...");
// 水平進度條顯示
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// 圓形進度條顯示
// progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setCancelable(true);
progressDialog.setButton("Cancle",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(DiaLogMethods.this, "取消進度條對話方塊",
Toast.LENGTH_LONG).show();
progressDialog.cancel();
count = 0;
}
});
progressDialog.setMax(100);
progressDialog.show();
count = 0;
new Thread() {
@Override
public void run() {
while (count <= 100) {
progressDialog.setProgress(count++);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
progressDialog.dismiss();
e.printStackTrace();
}
}
progressDialog.dismiss();
}
}.start();
}
八、 圓形進度條對話方塊
1.實現效果如下:
圓形進度條對話方塊
2.實現程式碼如下:
/**
* 圓形進度條顯示
**/
注意 :
水平進度條,圓形進度條的區別 如下:
// 水平進度條顯示
九、 自定義圖文對話方塊
1.實現效果如下:
自定義圖文對話方塊
2.實現程式碼如下:
/**
* 自定義圖文對話方塊實現
**/
注意:
3.自定義圖文對話方塊的佈局如下:
<?xml version="1.0" encoding="utf-8"?>
十、自定義輸入對話方塊
1.實現效果如下:
自定義輸入對話方塊
2.實現程式碼如下:
/**
* 自定義EditText對話方塊
**/
3.自定義對話方塊 佈局如下:
<?xml version="1.0" encoding="utf-8"?>
4.自定義EditText內容佈局
<?xml version="1.0" encoding="utf-8"?>
十一、自定義樣式對話方塊
1.實現效果如下:
自定義樣式對話方塊
2.實現程式碼如下:
/**
* 自定義樣式對話方塊
* **/
3.自定義樣式dialog_custom_style佈局如下:
dialog_custom_style 佈局
<?xml version="1.0" encoding="utf-8"?>
4.EditText 的背景是畫的edittext_background 圓角矩形
edittext_background
實現
<?xml version="1.0" encoding="utf-8"?>
android.R.style.Theme_Material_Light_Dialog_Alert
是用來定義Dialog
樣式。
=
十二、 自定義Loading樣式對話方塊
1.實現效果如下:
自定義Loading樣式對話方塊
2.實現程式碼如下:
/**
* 自定義Loading樣式對話方塊
***/
3.自定義Dialog Sstyle 如下:
<style name="loading_dialog" parent="android:style/Theme.Dialog">
<item name="android:windowFrame">@nullitem>
<item name="android:windowNoTitle">trueitem>
<item name="android:windowBackground">@drawable/loading_bgitem>
<item name="android:windowIsFloating">trueitem>
<item name="android:windowContentOverlay">@nullitem>
style>
4.自定義Dialog 樣式動畫如下:
<?xml version="1.0" encoding="utf-8"?>
5.自定義樣式的佈局如下:
<?xml version="1.0" encoding="utf-8"?>
十三、 繼承 DialogFragment 實現對話方塊
1.實現效果如下:
繼承 DialogFragment 實現對話方塊
2.自定義繼承DialogFragment 類
實現程式碼如下:
自定義繼承DialogFragment 類
public
3.Activity 呼叫顯示Dialog方法
/**
* 繼承 DialogFragment 實現對話方塊
* **/
十四、 Activity形式的 對話方塊
只需建立一個Activity
,並在清單檔案元素中將其主題設定為
Theme.Holo.Dialog
樣式即可
<activity android:theme="@android:style/Theme.Holo.Dialog" >
十五、倒計時 30s Dialog實現
1.實現效果如下:
倒計時關機實現
2.實現程式碼如下:
private TextView mShutDownTextView;
private Handler mOffHandler;
private Timer mShutdownTime;
private Dialog mDialog;
public void CountDownDialog(View view) {
CreateShutDownDialog();
}
private Handler mNumHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (msg.what > 0) {
// //動態顯示倒計時
mShutDownTextView
.setText("Warning! Battery temperature°С, phone will shutdown in "
+ msg.what + "s");
} else {
if (mDialog != null) {
mDialog.dismiss();
}
mShutdownTime.cancel();
Toast.makeText(getApplicationContext(), "倒計時結束", 0).show();
}
}
};
private void CreateShutDownDialog() {
mShutDownTextView = new TextView(this);
mShutDownTextView.setLineSpacing(1.2f, 1.2f);
mShutDownTextView.setText("");
mShutDownTextView.setPadding(20, 20, 20, 20);
mDialog = new AlertDialog.Builder(this).setTitle("Safety Warning")
.setCancelable(false).setView(mShutDownTextView)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
mShutdownTime.cancel();
}
}).create();
mDialog.show();
mDialog.setCanceledOnTouchOutside(false);
mShutdownTime = new Timer(true);
TimerTask timeTask = new TimerTask() {
int countTime = 30;
public void run() {
if (countTime > 0) {
countTime--;
}
Message msg = new Message();
msg.what = countTime;
mNumHandler.sendMessage(msg);
}
};
mShutdownTime.schedule(timeTask, 1000, 1000);
}
點個在看,方便您使用時快速查詢!