欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年10月25日 09:31:27   投稿:mrr  
這篇文章主要介紹了Android系統(tǒng)對話框使用詳解(最詳細),需要的朋友可以參考下

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

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

目錄

一、系統(tǒng)對話框的幾種類型與實現(xiàn)

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

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

對話框的樣式會根據(jù)手機系統(tǒng)版本的不同而變化。不能達到統(tǒng)一的樣式。

能實現(xiàn)的功能過于簡單。

在這里先附上下面代碼中出現(xiàn)文本的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、普通對話框

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

運行截圖:

代碼:

 private void showNormalDialog(){
  //創(chuàng)建dialog構(gòu)造器
  AlertDialog.Builder normalDialog = new AlertDialog.Builder(this);
  //設(shè)置title
  normalDialog.setTitle(getString(R.string.dialog_normal_text));
  //設(shè)置icon
  normalDialog.setIcon(R.mipmap.ic_launcher_round);
  //設(shè)置內(nèi)容
  normalDialog.setMessage(getString(R.string.dialog_normal_content));
  //設(shè)置按鈕
  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();
    }
  });
  //創(chuàng)建并顯示
  normalDialog.create().show();
 }

系統(tǒng)對話框都是支持鏈式調(diào)用的,舉例:

 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();

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

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

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

運行截圖:

代碼:

 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));
  //設(shè)置按鈕
  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();
 }

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

 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、普通列表對話框

此種類型的對話框能實現(xiàn)簡單的列表。

運行截圖:

代碼:

 /**
  * 普通列表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);
  /*
    設(shè)置item 不能用setMessage()
    用setItems
    items : listItems[] -> 列表項數(shù)組
    listener -> 回調(diào)接口
  */
  listDialog.setItems(listItems,new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      Toast.makeText(DialogActivity.this,listItems[which],Toast.LENGTH_SHORT).show();
    }
  });
  //設(shè)置按鈕
  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、單選對話框

運行截圖:

代碼:

 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);
  /*
    設(shè)置item 不能用setMessage()
    用setSingleChoiceItems
    items : radioItems[] -> 單選選項數(shù)組
    checkItem : 0 -> 默認選中的item
    listener -> 回調(diào)接口
  */
  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();
    }
  });
  //設(shè)置按鈕
  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、多選對話框

運行截圖:

代碼:

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);
  /*
    設(shè)置item 不能用setMessage()
    用setMultiChoiceItems
    items : radioItems[] -> 多選選項數(shù)組
    checkItems : isCheck[] -> 是否選中數(shù)組
    listener -> 回調(diào)接口
  */
  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();
      }
    }
  });
  //設(shè)置按鈕
  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、帶輸入框的彈窗

運行截圖:

代碼:

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);
  //設(shè)置dialog布局
  editDialog.setView(edit);
  //設(shè)置按鈕
  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、自定義布局的對話框

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

運行截圖:

布局文件: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);
  //設(shè)置組件
  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系統(tǒng)彈窗的幾種實現(xiàn)方式,幾乎涵蓋了能解決各種簡單需求。其中自定義布局的方式奠定了自定義彈窗的基本實現(xiàn)。

二、總結(jié)

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

以上所述是小編給大家介紹的Android系統(tǒng)對話框使用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android掛斷電話最新實現(xiàn)方法

    Android掛斷電話最新實現(xiàn)方法

    大家好,本篇文章主要講的是Android掛斷電話最新實現(xiàn)方法,感興趣的同學(xué)感快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Android?Flutter制作一個修改組件屬性的動畫

    Android?Flutter制作一個修改組件屬性的動畫

    flutter為我們提供了一個AnimationController來對動畫進行詳盡的控制,不過直接是用AnimationController是比較復(fù)雜的,如果只是對一個widget的屬性進行修改,可以做成動畫嗎,本文就來探討一下
    2023-05-05
  • 詳解Flutter和Dart取消Future的三種方法

    詳解Flutter和Dart取消Future的三種方法

    這篇文章主要為大家詳細介紹了在Flutter和Dart中取消Future的三種方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-04-04
  • Android判斷當(dāng)前棧頂Activity的包名代碼示例

    Android判斷當(dāng)前棧頂Activity的包名代碼示例

    這篇文章主要介紹了Android判斷當(dāng)前棧頂Activity的包名代碼示例,分享了相關(guān)代碼,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Android開發(fā)之拖動條和評分組件用法分析

    Android開發(fā)之拖動條和評分組件用法分析

    這篇文章主要介紹了Android開發(fā)之拖動條和評分組件用法,結(jié)合實例形式較為詳細的分析了Android拖動條及評分組件的布局與功能實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • Android自定義FloatingText仿點贊+1特效

    Android自定義FloatingText仿點贊+1特效

    這篇文章主要為大家詳細介紹了Android自定義FloatingText仿點贊+1特效,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • android監(jiān)聽軟鍵盤的彈出與隱藏的示例代碼

    android監(jiān)聽軟鍵盤的彈出與隱藏的示例代碼

    本篇文章主要介紹了android監(jiān)聽軟鍵盤的彈出與隱藏的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Android ADB簡介、安裝及使用詳解

    Android ADB簡介、安裝及使用詳解

    ADB 全稱為 Android Debug Bridge,起到調(diào)試橋的作用,是一個客戶端-服務(wù)器端程序,其中客戶端是用來操作的電腦,服務(wù)端是 Android 設(shè)備,這篇文章介紹Android ADB簡介、安裝及使用,感興趣的朋友跟隨小編一起看看吧
    2024-01-01
  • Android中使用Canvas繪制南丁格爾玫瑰圖(Nightingale rose diagram)

    Android中使用Canvas繪制南丁格爾玫瑰圖(Nightingale rose diagram)

    這篇文章主要介紹了Android中使用Canvas繪制南丁格爾玫瑰圖(Nightingale rose diagram),本文直接給出實現(xiàn)代碼和運行效果圖,需要的朋友可以參考下
    2015-03-03
  • flutter實現(xiàn)一個列表下拉抽屜的示例代碼

    flutter實現(xiàn)一個列表下拉抽屜的示例代碼

    本文主要介紹了flutter實現(xiàn)一個列表下拉抽屜的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論