Android 對(duì)話框 Dialog使用實(shí)例講解
對(duì)話框 Dialog
什么是對(duì)話框
對(duì)話框是在當(dāng)前的頁面之上彈出的小窗口, 用于顯示一些重要的提示信息, 提示用戶的輸入,確認(rèn)信息,或顯示某種狀態(tài).如 : 顯示進(jìn)度條對(duì)話框, 退出提示.
對(duì)話框的特點(diǎn):
1, 當(dāng)前界面彈出的小窗口.
2, 用戶要與它進(jìn)行交互, 可以接收用戶輸入的信息, 也可以反饋信息給用戶.
常用對(duì)話框:
1, 普通對(duì)話框 AlertDialog
2, 進(jìn)度條對(duì)話框 ProgressDialog
3, 日期對(duì)話框 DatePickerDialog
4, 時(shí)間對(duì)話框 TimePickerDialog
5, 自定義對(duì)話框
常用普通對(duì)話框 AlertDialog
1, 普通列表對(duì)話框 setItems -- onClickListener
2, 單選對(duì)話框 setSingleChoiceItems -- onClickListener
3, 多選對(duì)話框 setMultiChoiceItems --- > onMultiChoiceClickListener
4, 適配器對(duì)話框 setAdapter -- onClickListener
package com.qf.day11_dialog_01;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText name;
private EditText pwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void showAlertDialog(View v)
{
//1, 定義普通對(duì)話框的構(gòu)建者
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
//2, 構(gòu)建對(duì)話框
builder.setIcon(R.drawable.img_23);//設(shè)置圖標(biāo)
builder.setTitle("提示");//設(shè)置標(biāo)題
builder.setMessage("是否確認(rèn)退出?");//設(shè)置內(nèi)容
//設(shè)置取消按鈕
/**
* text 按鈕顯示的文字
* listener 按鈕對(duì)應(yīng)的監(jiān)聽器
*/
builder.setNegativeButton("取消", null);
//設(shè)置確定按鈕
builder.setPositiveButton("確定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
//3, 顯示對(duì)話框
builder.show();
}
public void showProgressDialog(View v)
{
//1, 得到ProgressDialog的對(duì)象
ProgressDialog pDialog = new ProgressDialog(this);
//2, 構(gòu)建對(duì)話框
pDialog.setIcon(R.drawable.img_14);
pDialog.setTitle("提示");
pDialog.setMessage("正在加載, 請(qǐng)稍后....");
pDialog.setCancelable(true);//是否可撤銷 true 可以 false 不可以
//設(shè)置進(jìn)度條對(duì)話框的樣式
//ProgressDialog.STYLE_HORIZONTAL 水平的
//ProgressDialog.STYLE_SPINNER 轉(zhuǎn)圈的
pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//3, 顯示對(duì)話框
pDialog.show();
//pDialog.dismiss();//對(duì)話框消失
pDialog.setProgress(50);//設(shè)置進(jìn)度值, 在顯示對(duì)話后,才可以設(shè)置
}
public void showDatePickerDialog(View v)
{
//獲取系統(tǒng)的當(dāng)前日期
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int monthOfYear = calendar.get(Calendar.MONTH);
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
//1, 創(chuàng)建帶有日期選擇器的對(duì)話框
/**
* context 上下文對(duì)象
* callBack onDateSetListener(日期選擇器上的"確定"按鈕監(jiān)聽器)
* year 默認(rèn)的年
* monthOfYear 默認(rèn)的月份
* dayOfMonth 默認(rèn)的日期
*/
DatePickerDialog dPDialog = new DatePickerDialog(this,new OnDateSetListener() {
/**
* DatePicker view 日期選擇器
*/
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
//選擇后的日期監(jiān)聽
Toast.makeText(MainActivity.this, year+"-"+(monthOfYear+1)+"-"+dayOfMonth, Toast.LENGTH_SHORT).show();
}
}, year, monthOfYear, dayOfMonth);
//2, 顯示對(duì)話框
dPDialog.show();
}
public void showTimePickerDialog(View v)
{
//1, 創(chuàng)建帶有時(shí)間選擇器的對(duì)話框
/**
* context 上下文對(duì)象
* callBack onTimeSetListener
* hourOfDay 默認(rèn)的小時(shí)
* minute 默認(rèn)的分鐘數(shù)
* is24HourView 是否24小時(shí)制
*/
TimePickerDialog tpDialog = new TimePickerDialog(this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(MainActivity.this, hourOfDay + " :" + minute, Toast.LENGTH_SHORT).show();
}
}, 15, 17, true);
//2, 顯示對(duì)話框
tpDialog.show();
}
//自定義對(duì)話框(在普通對(duì)話框基礎(chǔ)上實(shí)現(xiàn))
public void showCustomDialog(View v)
{
//1, 得到普通對(duì)話框的構(gòu)建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//2, 構(gòu)建對(duì)話框
builder.setIcon(R.drawable.img_23);
builder.setTitle("用戶登陸");
//3, 為對(duì)話框設(shè)置自定義的視圖
View view = getLayoutInflater().inflate(R.layout.login, null);
name = (EditText) view.findViewById(R.id.name);
pwd = (EditText) view.findViewById(R.id.pwd);
builder.setView(view);
//為對(duì)話框添加 按鈕
builder.setNegativeButton("取消", null);
builder.setPositiveButton("登陸", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String info = name.getText().toString()+", "+ pwd.getText().toString();
Toast.makeText(MainActivity.this, info, Toast.LENGTH_SHORT).show();
}
});
//4, 顯示對(duì)話框
builder.show();
}
}

package com.qf.day11_dialog_02;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv;
private int position;//單選列表的 中間轉(zhuǎn)接
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
}
//普通列表對(duì)話框
public void showCommon(View v)
{
//1, 得到普通對(duì)話框的構(gòu)建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("選擇顏色");
//2, 設(shè)置列表
//getResources().getStringArray(id)
builder.setItems(R.array.colors, new OnClickListener() {
/**
* DialogInterface dialog 對(duì)話框
* int which 當(dāng)前選中的item 從0開始
*/
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
tv.setTextColor(Color.RED);
break;
case 1:
tv.setTextColor(Color.GREEN);
break;
case 2:
tv.setTextColor(Color.BLUE);
break;
}
}
});
//3, 顯示對(duì)話框
builder.show();
}
//單選列表
public void showSingle(View v)
{
//1, 得到普通對(duì)話框的構(gòu)建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("設(shè)置文字大小");
//2, 設(shè)置單選列表
/**
* items 選項(xiàng)資源的ID R.array.sizes
* checkedItem 默認(rèn)選中的item的下標(biāo), 如果沒有默認(rèn)選中, 那么設(shè)置為-1
* listener 監(jiān)聽器
*/
builder.setSingleChoiceItems(R.array.sizes, -1, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 把當(dāng)前選中的Item的下標(biāo) 賦值給全局的變量 position
position = which;
}
});
builder.setPositiveButton("確定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO 根據(jù)全局的position 判斷該執(zhí)行什么樣的操作
switch (position) {
case 0:
tv.setTextSize(20);
break;
case 1:
tv.setTextSize(30);
break;
case 2:
tv.setTextSize(40);
break;
}
}
});
//3, 顯示對(duì)話框
builder.show();
}
//多選列表
public void showMulti(View v)
{
//1, 得到普通對(duì)話框的構(gòu)建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("設(shè)置內(nèi)容");
//2, 設(shè)置多選列表
/**
* items 資源的ID
* checkedItems 當(dāng)前選中的Item
* listener 監(jiān)聽器
*/
//得到所有的數(shù)據(jù)
final String[] hobbys = getResources().getStringArray(R.array.hobbys);
//選中的Item
final boolean[] checkedItems = new boolean[hobbys.length];
builder.setMultiChoiceItems(R.array.hobbys, checkedItems, new OnMultiChoiceClickListener() {
/**
* DialogInterface dialog 當(dāng)前對(duì)話框
* int which 當(dāng)前選擇的Item下標(biāo)
* boolean isChecked 當(dāng)前選擇Item的狀態(tài)
*/
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
//改變boolean[] 中狀態(tài)
checkedItems[which] = isChecked;
}
});
builder.setPositiveButton("確定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
StringBuilder sBuilder = new StringBuilder();
for(int i=0;i<checkedItems.length;i++)
{
if(checkedItems[i])
{
sBuilder.append(hobbys[i]).append(" ");
}
}
tv.setText(sBuilder.toString());
}
});
//3, 顯示對(duì)話框
builder.show();
}
//適配器列表
public void showAdapter(View v)
{
//1, 得到普通對(duì)話框的構(gòu)建者
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("選擇設(shè)置");
//2, 設(shè)置適配器
String[] data = getResources().getStringArray(R.array.settings);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
data);
builder.setAdapter(adapter, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
switch (which) {
case 0:
intent.setAction("android.settings.WIFI_SETTINGS");
break;
case 1:
intent.setAction("android.settings.SOUND_SETTINGS");
break;
case 2:
intent.setAction("android.settings.SETTINGS");
break;
}
startActivity(intent);
}
});
//3, 顯示對(duì)話框
//builder.show();
builder.create().show();
}
}

以上所述是小編給大家介紹的Android 對(duì)話框 Dialog使用實(shí)例講解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Android中自定義對(duì)話框(Dialog)的實(shí)例代碼
- 8種android 對(duì)話框(Dialog)使用方法詳解
- 屬于自己的Android對(duì)話框(Dialog)自定義集合
- Android中制作自定義dialog對(duì)話框的實(shí)例分享
- Android Dialog對(duì)話框詳解
- Android Dialog對(duì)話框用法實(shí)例詳解
- Android Dialog 對(duì)話框詳解及示例代碼
- Android 對(duì)話框(Dialog)大全示例(建立你自己的對(duì)話框)
- Android中Dialog對(duì)話框的使用小結(jié)
相關(guān)文章
Android自定義加載控件實(shí)現(xiàn)數(shù)據(jù)加載動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了Android自定義加載控件實(shí)現(xiàn)數(shù)據(jù)加載動(dòng)畫的相關(guān)資料,仿美團(tuán)、京東數(shù)據(jù)加載動(dòng)畫、小人奔跑動(dòng)畫,感興趣的小伙伴們可以參考一下2016-04-04
Android RefreshLayout實(shí)現(xiàn)下拉刷新布局
這篇文章主要為大家詳細(xì)介紹了Android RefreshLayout實(shí)現(xiàn)下拉刷新布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
Android AIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式
這篇文章主要介紹了Android AIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Android利用Sensor(傳感器)實(shí)現(xiàn)水平儀功能
這篇文章主要為大家詳細(xì)介紹了Android利用Sensor傳感器實(shí)現(xiàn)水平儀功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Android學(xué)習(xí)筆記——Menu介紹(三)
今天繼續(xù)昨天沒有講完的Menu的學(xué)習(xí),主要是Popup Menu的學(xué)習(xí),需要的朋友可以參考下2014-10-10
Android MediaPlayer音頻播放器封裝示例淺析
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內(nèi)置的媒體播放器的服務(wù),如播放音頻,視頻等為了使用MediaPlayer,我們要調(diào)用這個(gè)類的靜態(tài)create()方法2023-04-04
Android自定義ViewGroup嵌套與交互實(shí)現(xiàn)幕布全屏滾動(dòng)
這篇文章主要為大家介紹了Android自定義ViewGroup嵌套與交互實(shí)現(xiàn)幕布全屏滾動(dòng)效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01

