国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android系統對話框使用詳解(最詳細)

2019-10-22 18:24:58
字體:
來源:轉載
供稿:網友

在實際應用開發中,用到系統對話框中的情況幾乎是沒有的。按開發流程來說,UI工程師都會給出每一個彈窗的樣式,故而在實際開發中都是自定義彈窗的。

即使用到的地方不多,但是我們也是需要了解并且能熟練的運用它,下面為大家奉上各種系統對話框的實現。

目錄

android,系統,對話框

一、系統對話框的幾種類型與實現

在項目的實際開發中,用到的系統對話框幾乎是沒有的。原因大概包含以下幾點:

樣式過于單一,不能滿足大部分實際項目中的需求。

對話框的樣式會根據手機系統版本的不同而變化。不能達到統一的樣式。

能實現的功能過于簡單。

在這里先附上下面代碼中出現文本的string.xml文件。

<string name="dialog_normal_content">我是普通dialog</string><string name="dialog_normal_more_button_content">我是普通多按鈕dialog</string><string name="dialog_btn_confirm_text">確定</string><string name="dialog_btn_cancel_text">取消</string><string name="dialog_btn_neutral_text">忽略</string><string name="dialog_btn_confirm_hint_text">您點擊了確定按鈕</string><string name="dialog_btn_cancel_hint_text">您點擊了取消按鈕</string><string name="dialog_btn_neutral_hint_text">您點擊了忽略按鈕</string>

1、普通對話框

在實際項目開發中,此類型對話框中用到的地方要比其他類型的對話框多一些。但是考慮UI統一問題,也會很少用。

運行截圖:

android,系統,對話框

代碼:

 private void showNormalDialog(){  //創建dialog構造器  AlertDialog.Builder normalDialog = new AlertDialog.Builder(this);  //設置title  normalDialog.setTitle(getString(R.string.dialog_normal_text));  //設置icon  normalDialog.setIcon(R.mipmap.ic_launcher_round);  //設置內容  normalDialog.setMessage(getString(R.string.dialog_normal_content));  //設置按鈕  normalDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {      Toast.makeText(DialogActivity.this,getString(R.string.dialog_btn_confirm_hint_text)          ,Toast.LENGTH_SHORT).show();      dialog.dismiss();    }  });  //創建并顯示  normalDialog.create().show(); }

系統對話框都是支持鏈式調用的,舉例:

 new AlertDialog.Builder(this)      .setTitle(getString(R.string.dialog_normal_text))      .setIcon(R.mipmap.ic_launcher_round)      .setMessage(getString(R.string.dialog_normal_content))      .setPositiveButton(getString(R.string.dialog_btn_confirm_text)          , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this,getString(R.string.dialog_btn_confirm_hint_text)              ,Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      })      .create()      .show();

下面的代碼都是可以用鏈式調用的,這里就不展示了。

2、普通對話框(多按鈕)

在系統對話框中最多出現三個按鈕,即PositiveButton(確定)、NegativeButton(取消)、NeutralButton(忽略)。

運行截圖:

android,系統,對話框

代碼:

 private void showNormalMoreButtonDialog(){  AlertDialog.Builder normalMoreButtonDialog = new AlertDialog.Builder(this);  normalMoreButtonDialog.setTitle(getString(R.string.dialog_normal_more_button_text));  normalMoreButtonDialog.setIcon(R.mipmap.ic_launcher_round);  normalMoreButtonDialog.setMessage(getString(R.string.dialog_normal_more_button_content));  //設置按鈕  normalMoreButtonDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this              ,getString(R.string.dialog_btn_confirm_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      });  normalMoreButtonDialog.setNegativeButton(getString(R.string.dialog_btn_cancel_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this,              getString(R.string.dialog_btn_cancel_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      });  normalMoreButtonDialog.setNeutralButton(getString(R.string.dialog_btn_neutral_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this,              getString(R.string.dialog_btn_neutral_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      });  normalMoreButtonDialog.create().show(); }

也可以用下面的實現方式,和上面的代碼效果是一樣的。

 private void showNormalMoreButtonDialog(){  DialogInterface.OnClickListener setListener = null;  AlertDialog.Builder normalMoreButtonDialog = new AlertDialog.Builder(this);  normalMoreButtonDialog.setTitle(getString(R.string.dialog_normal_more_button_text));  normalMoreButtonDialog.setIcon(R.mipmap.ic_launcher_round);  normalMoreButtonDialog.setMessage(getString(R.string.dialog_normal_more_button_content));  setListener = new DialogInterface.OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {      switch (which){        case DialogInterface.BUTTON_POSITIVE:          Toast.makeText(DialogActivity.this,              getString(R.string.dialog_btn_confirm_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();          break;        case DialogInterface.BUTTON_NEUTRAL:          Toast.makeText(DialogActivity.this              ,getString(R.string.dialog_btn_neutral_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();          break;        case DialogInterface.BUTTON_NEGATIVE:          Toast.makeText(DialogActivity.this              ,getString(R.string.dialog_btn_cancel_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();          break;      }    }  };  normalMoreButtonDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text),setListener);  normalMoreButtonDialog.setNegativeButton(getString(R.string.dialog_btn_cancel_text),setListener);  normalMoreButtonDialog.setNeutralButton(getString(R.string.dialog_btn_neutral_text),setListener);  normalMoreButtonDialog.create().show(); }

3、普通列表對話框

此種類型的對話框能實現簡單的列表。

運行截圖:

android,系統,對話框

代碼:

 /**  * 普通列表dialog  */ private void showListDialog(){  final String listItems[] = new String[]{"listItems1","listItems2","listItems3",      "listItems4","listItems5","listItems6"};  AlertDialog.Builder listDialog = new AlertDialog.Builder(this);  listDialog.setTitle(getString(R.string.dialog_list_text));  listDialog.setIcon(R.mipmap.ic_launcher_round);  /*    設置item 不能用setMessage()    用setItems    items : listItems[] -> 列表項數組    listener -> 回調接口  */  listDialog.setItems(listItems,new DialogInterface.OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {      Toast.makeText(DialogActivity.this,listItems[which],Toast.LENGTH_SHORT).show();    }  });  //設置按鈕  listDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          dialog.dismiss();        }      });  listDialog.create().show(); }

4、單選對話框

運行截圖:

android,系統,對話框

代碼:

 private void showRadioDialog(){  final String radioItems[] = new String[]{"radioItem1","radioItem1","radioItem1","radioItem1"};  AlertDialog.Builder radioDialog = new AlertDialog.Builder(this);  radioDialog.setTitle(getString(R.string.dialog_radio_text));  radioDialog.setIcon(R.mipmap.ic_launcher_round);  /*    設置item 不能用setMessage()    用setSingleChoiceItems    items : radioItems[] -> 單選選項數組    checkItem : 0 -> 默認選中的item    listener -> 回調接口  */  radioDialog.setSingleChoiceItems(radioItems, 0, new DialogInterface.OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {      Toast.makeText(DialogActivity.this,radioItems[which],Toast.LENGTH_SHORT).show();    }  });  //設置按鈕  radioDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          dialog.dismiss();        }      });  radioDialog.create().show(); }

5、多選對話框

運行截圖:

android,系統,對話框

代碼:

private void showCheckBoxDialog(){  final String checkBoxItems[] = new String[]{"checkBoxItems1","checkBoxItems2",      "checkBoxItems3","checkBoxItems4"};  final boolean isCheck[] = new boolean[]{false,true,true,false};  AlertDialog.Builder checkBoxDialog = new AlertDialog.Builder(this);  checkBoxDialog.setTitle(getString(R.string.dialog_check_box_text));  checkBoxDialog.setIcon(R.mipmap.ic_launcher_round);  /*    設置item 不能用setMessage()    用setMultiChoiceItems    items : radioItems[] -> 多選選項數組    checkItems : isCheck[] -> 是否選中數組    listener -> 回調接口  */  checkBoxDialog.setMultiChoiceItems(checkBoxItems, isCheck      , new DialogInterface.OnMultiChoiceClickListener() {    @Override    public void onClick(DialogInterface dialog, int which, boolean isChecked) {      if (isChecked){        Toast.makeText(DialogActivity.this,            checkBoxItems[which] + "  選中",Toast.LENGTH_SHORT).show();      }else {        Toast.makeText(DialogActivity.this,            checkBoxItems[which] + "  未選中",Toast.LENGTH_SHORT).show();      }    }  });  //設置按鈕  checkBoxDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          dialog.dismiss();        }      });  checkBoxDialog.create().show(); }

6、帶輸入框的彈窗

運行截圖:

android,系統,對話框

代碼:

private void showEditDialog(){  final EditText edit = new EditText(this);  AlertDialog.Builder editDialog = new AlertDialog.Builder(this);  editDialog.setTitle(getString(R.string.dialog_edit_text));  editDialog.setIcon(R.mipmap.ic_launcher_round);  //設置dialog布局  editDialog.setView(edit);  //設置按鈕  editDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this,              edit.getText().toString().trim(),Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      });  editDialog.create().show(); }

7、自定義布局的對話框

此類型的對話框在實際項目開發中用到的地方比提示對話框用到的地方要多一些,不過在項目幾乎上都是自定義的對話框...

運行截圖:

android,系統,對話框

布局文件:custom_dialog_layout.xml

  <TextView      android:id="@+id/dialog_text"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:textSize="15sp"      android:textColor="@color/colorPrimary"      android:gravity="center"      android:padding="12dp"/>   <RelativeLayout      android:layout_width="match_parent"      android:layout_height="wrap_content">      <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@mipmap/ic_launcher"/>     <Button       android:id="@+id/dialog_btn_confirm"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:textColor="@color/colorAccent"       android:textSize="15sp"       android:text="@string/dialog_btn_confirm_text"       android:layout_centerHorizontal="true"/>     <Button       android:id="@+id/dialog_btn_cancel"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:textColor="@color/colorAccent"       android:textSize="15sp"       android:text="@string/dialog_btn_cancel_text"       android:layout_centerHorizontal="true"       android:layout_alignParentRight="true"/>   </RelativeLayout> </LinearLayout>

代碼:

 private void showLayoutDialog() {  //加載布局并初始化組件  View dialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog_layout,null);  TextView dialogText = (TextView) dialogView.findViewById(R.id.dialog_text);  Button dialogBtnConfirm = (Button) dialogView.findViewById(R.id.dialog_btn_confirm);  Button dialogBtnCancel = (Button) dialogView.findViewById(R.id.dialog_btn_cancel);  final AlertDialog.Builder layoutDialog = new AlertDialog.Builder(this);  layoutDialog.setTitle(getString(R.string.dialog_custom_layout_text));  layoutDialog.setIcon(R.mipmap.ic_launcher_round);  layoutDialog.setView(dialogView);  //設置組件  dialogText.setText("我是自定義layout的彈窗!!");  dialogBtnConfirm .setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {      Toast.makeText(DialogActivity.this,"我是自定義layout的彈窗!!",Toast.LENGTH_SHORT).show();    }  });  dialogBtnConfirm .setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {      layoutDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {        @Override        public void onDismiss(DialogInterface dialog) {          dialog.dismiss();        }      });    }  });  layoutDialog.create().show(); }

以上就是Android系統彈窗的幾種實現方式,幾乎涵蓋了能解決各種簡單需求。其中自定義布局的方式奠定了自定義彈窗的基本實現。

二、總結

可以看出上面的幾種實現方式都是通過AlertDialog類實現的。有興趣的可以看Android源碼中的AlertDialog類實現。

以上所述是小編給大家介紹的Android系統對話框使用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 名山县| 余庆县| 苏州市| 临夏县| 铁力市| 南昌县| 双牌县| 潮州市| 嘉兴市| 马山县| 甘肃省| 洪湖市| 连城县| 乡城县| 蒲江县| 海盐县| 临桂县| 偏关县| 桂林市| 威宁| 凤冈县| 北辰区| 白银市| 扎赉特旗| 安丘市| 金塔县| 濮阳县| 久治县| 北票市| 墨脱县| 岢岚县| 大理市| 福海县| 正镶白旗| 罗甸县| 于田县| 肇庆市| 鄂尔多斯市| 井冈山市| 永川市| 芦溪县|