1. 程式人生 > >Android之對話方塊的使用

Android之對話方塊的使用

一.對話方塊

對話方塊:就是在當前Activity之上顯示的小視窗,用於和使用者間進行資訊互動。對話方塊通常用來作為提示或直接與程式執行相關的短暫停留介面。

**

二、AlertDialog可以實現大部分和使用者互動的對話方塊

**

為了建立一個AlertDialog,可以使用AlertDialog.Builder子類。使用AlertDialog.Builder(Context)得到一個對話方塊構造器,然後使用該類的共有方法來定義AlertDialog對話方塊的所有屬性。在你使用對話方塊構造器設定完屬性之後,呼叫create()方法即可得到一個AlertDialog的物件。

1.確定取消基本對話方塊

    //建立AlertDialog對話方塊構造器
    AlertDialog.Builder builder=new Builder(this);
    //設定對話方塊標題
    builder.setTitle("警告");
    //設定對話方塊內容
    builder.setMessage("確定要刪除該資訊?");
    //設定對話方塊不能被取消
    builder.setCancelable(false);
    //設定第一個按鈕的標籤及其事件監聽器
    builder.setPositiveButton("確定", new OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

        }
    });
    //設定第二個按鈕的標籤及其事件監聽器
    builder.setNegativeButton("取消", null);
    //建立對話方塊
    AlertDialog alter=builder.create();
    //顯示對話方塊
    builder.show();

這裡寫圖片描述

2.單選對話方塊

AlertDialog.Builder builder=new Builder(this);
        builder.setTitle("請選擇性別:");
        final String[] items={"男","女"};
        builder.setSingleChoiceItems(items, -1, new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        builder.setPositiveButton("確定",null);
        builder.setNegativeButton("取消選擇", null);
        builder.show();

這裡寫圖片描述

3.多選對話方塊

AlertDialog.Builder builder=new Builder(this);
        builder.setTitle("請選擇愛好:");
        final String[] items={"籃球","足球","乒乓球","羽毛球"};
        final boolean[] checkedItems={false,false,false,false};
        builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener(){

            @Override
            public void onClick(DialogInterface dialog, int which,
                    boolean isChecked) {

            }});
        builder.setPositiveButton("確定",null);
        builder.setNegativeButton("取消選擇", null);
        builder.show();

這裡寫圖片描述

4.輸入對話方塊

new AlertDialog.Builder(this).setTitle("警告").setView(new EditText(this)).setCancelable(false)
        .setPositiveButton("確定",new OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub

            }
        }).setNegativeButton("取消", null).show();
        }

這裡寫圖片描述

三:進度條:

為了避免載入過慢造成的不太好的使用者體驗,可以設定進度條對話方塊給使用者提醒載入進度。

1.進度對話方塊

final ProgressDialog progress=new ProgressDialog(this);
        progress.setTitle("提醒");
        progress.setMessage("正在載入資料...");
        progress.show();

        new Thread(){
            public void run(){
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //進度對話方塊關閉
                progress.dismiss();
            }
        }.start();

這裡寫圖片描述
2.進度條對話方塊

final ProgressDialog progress=new ProgressDialog(this);
            progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progress.setMax(100);
            progress.setTitle("提醒");
            progress.setMessage("正在載入資料...");
            progress.show();

            new Thread(){
                public void run(){
                    for(int i=1;i<100;i++){
                        try {
                            Thread.sleep(200);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        progress.setProgress(i);
                    }
                    //進度對話方塊關閉
                    progress.dismiss();
                }
            }.start();

這裡寫圖片描述

四.自定義對話方塊:

在對話方塊中設定自己想要的任何效果。

1.先定義自定義對話方塊的佈局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="65dp"
android:gravity="center_vertical"
>
<ImageView 
    android:layout_width="35dp"
    android:layout_height="35dp"
    android:id="@+id/iv"

    />
<TextView
    android:layout_centerVertical="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/iv"
    android:layout_marginLeft="12dp"
    android:id="@+id/tv"
    android:textSize="22sp"
    />

2.使用setContentView(int)來設定對話方塊的佈局為自定義的佈局

Dialog dialog=new Dialog(MainActivity.this);
            dialog.setTitle("自定義");
            dialog.setContentView(R.layout.item);

            ImageView image=(ImageView)dialog.findViewById(R.id.iv);
            image.setImageResource(R.drawable.ic_launcher);

            TextView text=(TextView)dialog.findViewById(R.id.tv);
            text.setText("this is a dialog");

            dialog.show();

這裡寫圖片描述