Android Dialog 學習匯總

fmms 14年前發布 | 82K 次閱讀 Android Android開發 移動開發

一、界面效果
運行界面

Android Dialog 學習匯總

---------------------------------------------------------------------------------------

部分效果

自定義登錄對話框

Android Dialog 學習匯總

圓形(轉圈)進度條

Android Dialog 學習匯總


長形進度條

Android Dialog 學習匯總


多選按鈕對話框

Android Dialog 學習匯總


單選按鈕對話框

Android Dialog 學習匯總


帶多個按鈕的提示對話框

Android Dialog 學習匯總


帶確定取消按鈕的提示對話框

Android Dialog 學習匯總

---------------------------------------------------------------------------------------------------------

二、知識點
1 AlertDialog.Builder屬性
* setTitle: 為對話框設置標題 ;
* setIcon : 為對話框設置圖標;
* setMessage: 為對話框設置內容;
* setView :  給對話框設置自定義樣式 ;
* setItems: 設置對話框要顯示的一個list,一般用于顯示幾個命令時;
* setMultiChoiceItems:用來設置對話框顯示一系列的復選框;
* setNeutralButton : 響應中立行為的點擊;
* setPositiveButton : 響應Yes/Ok的點擊 ;
* setNegativeButton :響應No/Cancel的點擊 ;
* create : 創建對話框 ;
* show : 顯示對話框;
2 ProgressDialog屬性
*setProgressStyle:      設置進度條風格,風格為圓形,旋轉的;
*setTitlt:                          設置ProgressDialog 標題;
*setMessage:              設置ProgressDialog提示信息;
*setIcon:                         設置ProgressDialog標題圖標;
*setIndeterminate:    設置ProgressDialog 的進度條是否不明確;
*setCancelable:         設置ProgressDialog 是否可以按返回鍵取消;
*setButton:              設置ProgressDialog 的一個Button(需要監聽Button事件);
*show:                     顯示ProgressDialog。

-----------------------------------------------------------------------------------------

三、源碼
1 布局文件:dialog_demo.xml

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="vertical" >

     <TextView
 android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:gravity="center_horizontal"
         android:paddingBottom="10dp"
         android:paddingTop="8dp"
         android:text="SkySeraph Android學習專題:Dialog"
         android:textColor="#FFFF00"
         android:textSize="15dp" >
     </TextView>

     <LinearLayout
 android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
         android:orientation="vertical" >

         <Button
 android:id="@+id/dialg_demo_btn01"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="簡單提示對話框" 
             android:textSize="12dp" />

         <Button
 android:id="@+id/dialg_demo_btn02"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="帶確定取消按鈕的提示對話框" 
             android:textSize="12dp" />

         <Button
 android:id="@+id/dialg_demo_btn03"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="帶多個按鈕的提示對話框" 
             android:textSize="12dp" />

         <Button
 android:id="@+id/dialg_demo_btn04"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="單選按鈕對話框" 
             android:textSize="12dp" />

         <Button
 android:id="@+id/dialg_demo_btn05"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="多選按鈕對話框" 
             android:textSize="12dp" />

         <Button
 android:id="@+id/dialg_demo_btn06"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="列表對話框" 
             android:textSize="12dp" />

         <Button
 android:id="@+id/dialg_demo_btn07"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="自定義對話框"
             android:textSize="12dp"/>

         <Button
 android:id="@+id/dialg_demo_btn08"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="長形進度條"
             android:textSize="12dp"/>

         <Button
 android:id="@+id/dialg_demo_btn09"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="圓形(轉圈)進度條"
             android:textSize="12dp"/>

         <Button
 android:id="@+id/dialg_demo_btn10"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:text="..."
             android:textSize="12dp" />

     </LinearLayout>

 </LinearLayout>
2 java代碼:dialog_demo.java
public class dialog_demo extends Activity
 {
     private static final int MAX_PROGRESS = 100;    //進度條最大數
     private ProgressDialog mProgressDialog  = null; //進度條
     final String[] m_Items = {"Frist","Second","Third"};
     int mSingleChoiceID = -1;    //記錄單選中的ID
     ArrayList <Integer>MultiChoiceID = new ArrayList <Integer>();//記錄多選選中的id號

 // ////////////////////////////////////////////////////////////////////////////////////
     @Override
     protected void onCreate(Bundle savedInstanceState)
     {
         // TODO Auto-generated method stub
         super.onCreate(savedInstanceState);
         setContentView(R.layout.dialog_demo);
         findViews();
     }

     // ////////////////////////////////////////////////////////////////////////////////////
     private void findViews()
     {        
         // //////////////////////////////////////////////////////////////////////////////
         /* 【簡單提示對話框】 */
         Button btn1 = (Button) findViewById(R.id.dialg_demo_btn01);
         btn1.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 new AlertDialog.Builder(dialog_demo.this).setTitle("簡單提示對話框").setMessage("這是提示信息")
                         .show();
                 return;
             }
         });
         // //////////////////////////////////////////////////////////////////////////////
         /* 【帶確定取消按鈕的提示對話框】 */
         Button btn2 = (Button) findViewById(R.id.dialg_demo_btn02);
         btn2.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 AlertDialog.Builder dialog02 = new AlertDialog.Builder(dialog_demo.this);
                 dialog02.setTitle("帶確定取消按鈕的提示對話框");
                 dialog02.setIcon(R.drawable.qq);
                 dialog02.setMessage("這是提示內容");
                 dialog02.setPositiveButton("確定", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialoginterface, int which)
                     {
                         Toast.makeText(dialog_demo.this, "你選擇了確定", Toast.LENGTH_LONG).show();
                     }
                 });
                 dialog02.setNegativeButton("取消", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialoginterface, int which)
                     {
                         Toast.makeText(dialog_demo.this, "你選擇了取消", Toast.LENGTH_LONG).show();
                     }
                 });
                 dialog02.create().show(); 
                 return;
             }
         });
         // //////////////////////////////////////////////////////////////////////////////
         /* 【帶多個按鈕的提示對話框】 */
         Button btn3 = (Button) findViewById(R.id.dialg_demo_btn03);
         btn3.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 AlertDialog.Builder dialog03 = new AlertDialog.Builder(dialog_demo.this);
                 dialog03.setIcon(R.drawable.img1);
                 dialog03.setTitle("帶多個按鈕的提示對話框");
                 dialog03.setMessage("你最喜歡的球類運動是什么呢?");
                 dialog03.setPositiveButton("籃球", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialoginterface, int which)
                     {
                         showDialog("籃球很不錯");
                     }
                 });
                 dialog03.setNeutralButton("乒乓球", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialoginterface, int which)
                     {
                         showDialog("乒乓球很不錯");
                     }
                 });
                 dialog03.setNegativeButton("足球", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialoginterface, int which)
                     {
                         showDialog("足球很不錯");
                     }
                 });
                 dialog03.create().show();
                 return;
             }
         });
         // //////////////////////////////////////////////////////////////////////////////
         /*【單選按鈕對話框】*/
         Button btn4 = (Button) findViewById(R.id.dialg_demo_btn04);
         btn4.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 mSingleChoiceID = -1;
                 AlertDialog.Builder dialog04 = new AlertDialog.Builder(dialog_demo.this);
                 dialog04.setTitle("單選按妞");
                 dialog04.setSingleChoiceItems(m_Items, 0, new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int whichButton)
                     {
                         mSingleChoiceID = whichButton;
                         showDialog("你選擇的id為" + whichButton + " , " + m_Items[whichButton]);
                     }
                 });
                 dialog04.setPositiveButton("確定", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int whichButton)
                     {
                         if (mSingleChoiceID > 0)
                         {
                             showDialog("你選擇的是" + mSingleChoiceID);
                         }
                     }
                 });
                 dialog04.setNegativeButton("取消", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int whichButton)
                     {

                     }
                 });
                 dialog04.create().show();
                 return;
             }
         });
         // //////////////////////////////////////////////////////////////////////////////
         /*【多選按鈕對話框】*/
         Button btn5 = (Button) findViewById(R.id.dialg_demo_btn05);
         btn5.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 MultiChoiceID.clear();
                 AlertDialog.Builder dialog05 = new AlertDialog.Builder(dialog_demo.this);
                 dialog05.setTitle("多選按鈕");
                 dialog05.setMultiChoiceItems(m_Items, new boolean[]
                 { false, false, false},
                         new DialogInterface.OnMultiChoiceClickListener()
                         {
                             public void onClick(DialogInterface dialog, int whichButton,
                                     boolean isChecked)
                             {
                                 if (isChecked)
                                 {
                                     MultiChoiceID.add(whichButton);
                                     showDialog("你選擇的id為" + whichButton + " , "
                                             + m_Items[whichButton]);
                                 } else
                                 {
                                     MultiChoiceID.remove(whichButton);
                                 }

                             }
                         });
                 dialog05.create().show();
                 return;
             }
         });
         // //////////////////////////////////////////////////////////////////////////////
         /*【列表框對話框】*/
         Button btn6 = (Button) findViewById(R.id.dialg_demo_btn06);
         btn6.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 AlertDialog.Builder dialog06 = new AlertDialog.Builder(dialog_demo.this);
                 dialog06.setTitle("列表框");
                 dialog06.setItems(m_Items, new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int which)
                     {
                         // 點擊后彈出窗口選擇了第幾項
                         showDialog("你選擇的id為" + which + " , " + m_Items[which]);
                     }
                 });
                 dialog06.create().show();
                 return;
             }
         });        
         // //////////////////////////////////////////////////////////////////////////////
         /*【自定義登錄對話框】*/
         Button btn7 = (Button) findViewById(R.id.dialg_demo_btn07);
         btn7.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 LayoutInflater factory = LayoutInflater.from(dialog_demo.this);                
                 final View view = factory.inflate(R.layout.dialog_demo_login, null);// 獲得自定義對話框

                 AlertDialog.Builder dialog07 = new AlertDialog.Builder(dialog_demo.this);
                 dialog07.setIcon(R.drawable.qq);
                 dialog07.setTitle("自定義登錄對話框");
                 dialog07.setView(view);
                 dialog07.setPositiveButton("確定", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int whichButton)
                     {

                         EditText userName = (EditText) view
                                 .findViewById(R.id.dialog_demo_loginETUserName);
                         EditText password = (EditText) view
                                 .findViewById(R.id.dialog_demo_loginETPassWord);
                         showDialog("姓名 :" + userName.getText().toString() + "密碼:"
                                 + password.getText().toString());
                     }
                 });
                 dialog07.setNegativeButton("取消", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int whichButton)
                     {
                         //Toast.makeText(dialog_demo.this, "你選擇了取消", Toast.LENGTH_LONG).show();
                         showDialog("你選擇了取消");
                     }
                 });
                 dialog07.create().show();
                 return;
             }
         });
         // //////////////////////////////////////////////////////////////////////////////
         Button btn8 = (Button) findViewById(R.id.dialg_demo_btn08);
         btn8.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 mProgressDialog = new ProgressDialog(dialog_demo.this);//創建ProgressDialog對象
                 mProgressDialog.setIcon(R.drawable.qq);// 設置ProgressDialog標題 圖標
                 mProgressDialog.setTitle("進度條窗口");// 設置ProgressDialog標題 
                 mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//設置進度條風格,風格為長形
                 mProgressDialog.setMax(MAX_PROGRESS);// 設置ProgressDialo進度條進度 
                 mProgressDialog.setButton("確定", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int whichButton)
                     {
                         // 這里添加點擊后的邏輯
                     }
                 });
                 mProgressDialog.setButton2("取消", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int whichButton)
                     {
                         // 這里添加點擊后的邏輯
                     }
                 });
                 mProgressDialog.show();
                 new Thread()
                 {
                     @Override
                     public void run() 
                     {
                         int Progress = 0;
                         while (Progress < MAX_PROGRESS)
                         {
                             try
                             {                
                                 mProgressDialog.setProgress(Progress++);  
                                 //mProgressDialog.incrementProgressBy(1);
                                 Thread.sleep(100);
                             } catch (Exception e)
                             {
                                 // TODO Auto-generated catch block
                                 mProgressDialog.cancel();
                                 //e.printStackTrace();
                             }
                         }    
                     };
                 }.start();
                 return;
             }
         });
         // //////////////////////////////////////////////////////////////////////////////
         /*【圓形(轉圈)進度條】*/
         Button btn9 = (Button) findViewById(R.id.dialg_demo_btn09);
         btn9.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 mProgressDialog = new ProgressDialog(dialog_demo.this);//創建ProgressDialog對象
                 mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); //設置進度條風格,風格為圓形,旋轉的 
                 mProgressDialog.setTitle("讀取ing...");// 設置ProgressDialog標題 
                 mProgressDialog.setMessage("正在讀取中請稍候...");// 設置ProgressDialog提示信息 
                 mProgressDialog.setIndeterminate(true);//設置ProgressDialog 的進度條不明確
                 mProgressDialog.setCancelable(true);// 設置ProgressDialog 可以按退回鍵取消
                 mProgressDialog.setButton("確定", new DialogInterface.OnClickListener()
                 {
                     public void onClick(DialogInterface dialog, int whichButton)
                     {
                         // 這里添加點擊后的邏輯
                     }
                 });
                 mProgressDialog.show();// 讓ProgressDialog顯示
                 return;
             }
         });
         // //////////////////////////////////////////////////////////////////////////////
         /*【帶補充對話框】*/
         Button btn10 = (Button) findViewById(R.id.dialg_demo_btn10);
         btn10.setOnClickListener(new OnClickListener()
         {
             public void onClick(View v)
             {
                 // TODO Auto-generated method stub
                 return;
             }
         });
         // //////////////////////////////////////////////////////////////////////////////
     }

     // ////////////////////////////////////////////////////////////////////////////////////
     /*顯示子函數*/
     private void showDialog(String str)
     {
         new AlertDialog.Builder(dialog_demo.this).setMessage(str).show();
         // Toast.makeText(dialog_demo.this, str, Toast.LENGTH_LONG).show();
     }
     // ////////////////////////////////////////////////////////////////////////////////////
 }
3 自定義登錄對話框:dialog_demo_login.xml
<?xml version="1.0" encoding="utf-8"?>
 <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/dialog_demo_login"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical" >

     <TextView
 android:id="@+id/dialog_demo_loginTVUserName"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="姓名:" 
         android:textSize="18dp">
     </TextView>

     <EditText
 android:id="@+id/dialog_demo_loginETUserName"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text=""
         android:textSize="18dp" >
     </EditText>

     <TextView
 android:id="@+id/dialog_demo_loginTVPassWord"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="密碼:"
         android:textSize="18dp" >
     </TextView>

     <EditText
 android:id="@+id/dialog_demo_loginETPassWord"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text=""
         android:textSize="18dp">
     </EditText>

 </TableLayout>

四、Refs

【Android】對話框 AlertDialog :http://blog.csdn.net/feng88724/article/details/6171450

Android UI學習 - 對話框 (AlertDialog & ProgressDialog) http://android.blog.51cto.com/268543/333769 

Android軟件開發之盤點所有Dialog對話框大合集(一) :http://blog.csdn.net/xys289187120/article/details/6601613

Android 對話框(Dialog)大全 建立你自己的對話框 :http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html

轉自:http://www.cnblogs.com/skyseraph/archive/2012/02/22/2362989.html

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!