常見的對話框Dialog

常見的對話框:

1.Toast

2.普通的對話框 

3.列表對話框

4.單選對話框

5.多選對話框

6.自定義VIew對話框

7.進度條對話框(與進度相關的控件都可以到子線程更新UI)

8.是用了Adapter的對話框

xml代碼:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.dialog.MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="普通對話框"
        android:onClick="dialog_1"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="列表對話框"
        android:onClick="dialog_2"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="單選對話框"
        android:onClick="dialog_3"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="多選對話框"
        android:onClick="dialog_4"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="自定義View對話框"
        android:onClick="dialog_5"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="進度條對話框"
        android:onClick="dialog_6"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="使用Adapter的對話框"
        android:onClick="dialog_7"/>

</LinearLayout>

java代碼:

package com.example.dialog;

import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    // 點擊按鈕彈出一個普通對話框
    public void dialog_1(View view){
        // 創建一個對話框實例,Builder是AlertDialog的靜態內部類,所有的對話框需要填寫上下文的都不許要填寫this
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 設置標題
        builder.setTitle("更新提示");
        // 設置標題前面的圖標
        builder.setIcon(R.mipmap.ic_launcher_round);
        // 設置內容
        builder.setMessage("馬上更新");
        // 設置確定鍵(積極的)及監聽
        builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 按下確定鍵後該實現什麼功能,這裏就Toast下
                Toast.makeText(MainActivity.this, "按下了確定鍵", Toast.LENGTH_SHORT).show();
            }
        });
        // 設置取消鍵(消極的)及監聽
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 按下取消鍵後實現什麼功能,這裏也就Toast下
                Toast.makeText(MainActivity.this, "按下了取消鍵", Toast.LENGTH_SHORT).show();
            }
        });
        // 跟Toast一樣一定要show出來,否則對話框不會顯示出來
        builder.show();

    }
    // 點擊按鈕彈出一個列表對話框
    public void dialog_2(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("請選擇");
        final String [] items = {"遊戲","運動","電影","旅遊","看書"};
        builder.setItems(items, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "選擇了"+items[which], Toast.LENGTH_SHORT).show();
            }
        });
        // 這樣也可以show出來
        AlertDialog dialog = builder.create();
        dialog.show();
    }


    // 定義一個變量代表數組的座標
    int index;
    // 點擊彈出一個單選的對話框
    public void dialog_3(View view){
        // 創建一個對話框實例
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 設置標題
        builder.setTitle("性別");
        // 設置單選內容
        final String items[] = {"男","女"};
        // 設置單選(-1是默認狀態下沒有選中的條目)
        builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int whih) {
                // 選中項座標賦給index
                index = whih;
            }
        });
        builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 監聽被選中條目之後實現什麼功能,這裏就Toast下
                Toast.makeText(MainActivity.this,"選擇了"+items[index],Toast.LENGTH_SHORT).show();
            }
        });
        // 顯示對話框
        builder.show();
    }
    // 點擊按鈕彈出一個多選對話框
    public void dialog_4(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("選擇愛好");
        final String hobby[] = {"看電影","聽音樂","旅遊","爬山","打籃球","踢足球","打羽毛球"};
        // 初始化選項的狀態
        final boolean choice[] = {false,false,false,false,false,false,false};
        builder.setMultiChoiceItems(hobby, choice, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                // 用戶選中的條目賦值給選項狀態數組
                choice[which]=isChecked;
            }
        });
        builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                StringBuffer sb = new StringBuffer();
                for (int i = 0; i < hobby.length; i++) {
                    if (choice[i]) {
                        sb.append(hobby[i]+" ");
                    }
                }
                Toast.makeText(MainActivity.this, "選擇了:"+sb.toString(), Toast.LENGTH_SHORT).show();
            }
        });
        builder.show();
    }
    // 點擊按鈕彈出一個自定義View的對話框
    public void dialog_5(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("正在連接wifi");
        // 創建輸入文本
        final EditText et = new EditText(this);
        // 設置文本提示語句
        et.setHint("請輸入密碼");
        // 設置只能單行,不能換行
        et.setSingleLine(true);
        // 把輸入文本設置到View裏面才能顯示出來
        builder.setView(et);
        // 設置取消按鈕
        builder.setNegativeButton("取消",null);
        // 設置確定按鈕
        builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 獲取用戶輸入的密碼
                String password = et.getText().toString();
                // 判斷密碼是否正確
                if (password.equals("123456789")){
                    Toast.makeText(MainActivity.this,"登陸成功",Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(MainActivity.this,"密碼輸入有誤", Toast.LENGTH_SHORT).show();
                }
            }
        });
        builder.show();
    }

    // 點擊按鈕彈出一個進度條對話框
    public void dialog_6(View view){
        // 創建一個進度條對話框實例
        final ProgressDialog dialog = new ProgressDialog(this);
        // 設置標題
        dialog.setTitle("正在更新中");
        // 設置進度條的樣式(水平樣式)默認是圓圈樣式的
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        // 顯示對話框
        dialog.show();
        // 設置一個子線程來更新進度(與進度相關的控件都可以到子線程更新UI)
        new Thread(){
            @Override
            public void run() {
                // 設置進度最大值
                dialog.setMax(100);
                // 設置當前進度
                for (int i = 0; i <= 100; i++) {
                    dialog.setProgress(i);
                    // 這裏是模擬所有就每走一下休息50毫秒
                    SystemClock.sleep(50);
                }
                // 進度完成後關閉對話框
                dialog.dismiss();
            }
        }.start();
    }
    // 點擊按鈕彈出一個使用了Adapter的對話框
    public void dialog_7(View view){

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("使用Adapter");
        // 設置一個String類型的數組
        final String [] items = {"遊戲","運動","電影","旅遊","看書"};
        // 創建一個適配器
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items);
        // 設置適配器
        builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this,"選擇了"+items[which],Toast.LENGTH_SHORT).show();
            }
        });
        builder.show();
    }
}

下面就是運行效果:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章