package liudeli.ui.all; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.SystemClock; import android.view.View; import android.widget.Toast; public class DialogActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dialog); } /** * 普通對話框 * @param view */ public void commonDialog(View view) { // AlertDialog.Builder 使用了構建器模式(相當於你把所有材料給工人,工人把制作好的房子給你) AlertDialog.Builder builder = new AlertDialog.Builder(DialogActivity.this); // 注意:這里只能使用當前Activity的this, // 不能使用:getApplicationContext(); getBaseContext(); 否則會有異常 builder.setCancelable(false); // 設置點擊Dialog其他區域不隱藏對話框,默認是true builder.setTitle("警告"); builder.setMessage("你確定要清空所有資料嗎 ?"); // PositiveButton 右邊的按鈕 builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { alertToast("點擊了確定"); } }); // 左邊的按鈕 builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { alertToast("點擊了取消"); } }); // 最左邊的按鈕 builder.setNeutralButton("明天提醒我", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { alertToast("明天這個時候通知你"); } }); AlertDialog alertDialog = builder.create(); // 工人把制作好的房子給你 alertDialog.show(); } /** * 列表對話框(列表條目對話框,列表單選對話框,列表多選對話框) * @param view */ public void listDialog(View view) { // AlertDialog.Builder 使用了構建器模式(相當於你把所有材料給工人,工人把制作好的房子給你) final AlertDialog.Builder builder = new AlertDialog.Builder(DialogActivity.this); // 注意:這里只能使用當前Activity的this, // 不能使用:getApplicationContext(); getBaseContext(); 否則會有異常 builder.setCancelable(false); // 設置點擊Dialog其他區域不隱藏對話框,默認是true builder.setTitle("選擇"); /** * ⚠️注意:列表對話框,千萬不能設置setMessage,否則列表數據不能顯示 */ // builder.setMessage("請選擇以下編程語言"); builder.setIcon(R.mipmap.ic_launcher); /** * 只要Dialog隱藏了就是調用這個監聽 */ builder.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { alertToast("Dismiss"); } }); /** * 可以設置適配器,可以當作ListView來使用 */ // builder.setAdapter(); String[] items = new String[]{"Java", "Android", "iOS"}; /** * 設置列表數據 列表條目形式 */ /*builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { alertToast(which + ""); } });*/ /** * 設置列表數據 列表多選形式 */ /*builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { alertToast(which + ""); } });*/ /** * 設置列表數據 列表單選形式 */ builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { alertToast(which + ""); dialog.dismiss(); } }); // 必須放在后面 最后才能制作好 AlertDialog alertDialog = builder.create(); // 工人把制作好的房子給你 alertDialog.show(); } /** * 進度條對話框(默認是不確定進度條,可以設置樣式為確定進度條) * @param view */ public void progressDialog(View view) { final ProgressDialog progressDialog = new ProgressDialog(this); // 注意:這里只能使用當前Activity的this, // 不能使用:getApplicationContext(); getBaseContext(); 否則會有異常 progressDialog.setTitle("提示"); progressDialog.setTitle("正在加載中,可能要等待大半天"); progressDialog.setCancelable(true); // 默認就是true // 設置為 確定進度條 (默認是不確定進度條) progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMax(100); new Thread(){ @Override public void run() { super.run(); for(int i=0; i< progressDialog.getMax(); i++) { // 使用Android提供的睡眠 SystemClock.sleep(300); progressDialog.setProgress(i + 1); } } }.start(); progressDialog.show(); } private void alertToast(String text) { Toast.makeText(DialogActivity.this, text, Toast.LENGTH_LONG).show(); } @Override protected void onDestroy() { super.onDestroy(); } }
Layout:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="普通對話框" android:onClick="commonDialog" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="列表對話框" android:onClick="listDialog" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="進度條對話框" android:onClick="progressDialog" /> </LinearLayout>