Android 對(duì)話框 Dialog使用實(shí)例講解
對(duì)話框 Dialog
什么是對(duì)話框
對(duì)話框是在當(dāng)前的頁(yè)面之上彈出的小窗口, 用于顯示一些重要的提示信息, 提示用戶的輸入,確認(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)聽(tīng)器 */ 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);//是否可撤銷(xiāo) 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)聽(tīng)器) * 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)聽(tīng) 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開(kāi)始 */ @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), 如果沒(méi)有默認(rèn)選中, 那么設(shè)置為-1 * listener 監(jiān)聽(tīng)器 */ 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)聽(tīng)器 */ //得到所有的數(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ì)大家有所幫助,如果大家有任何疑問(wèn)請(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)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android自定義加載控件實(shí)現(xiàn)數(shù)據(jù)加載動(dòng)畫(huà)的相關(guān)資料,仿美團(tuán)、京東數(shù)據(jù)加載動(dòng)畫(huà)、小人奔跑動(dòng)畫(huà),感興趣的小伙伴們可以參考一下2016-04-04Android RefreshLayout實(shí)現(xiàn)下拉刷新布局
這篇文章主要為大家詳細(xì)介紹了Android RefreshLayout實(shí)現(xiàn)下拉刷新布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Android AIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式
這篇文章主要介紹了Android AIDL實(shí)現(xiàn)與服務(wù)相互調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android利用Sensor(傳感器)實(shí)現(xiàn)水平儀功能
這篇文章主要為大家詳細(xì)介紹了Android利用Sensor傳感器實(shí)現(xiàn)水平儀功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02Android學(xué)習(xí)筆記——Menu介紹(三)
今天繼續(xù)昨天沒(méi)有講完的Menu的學(xué)習(xí),主要是Popup Menu的學(xué)習(xí),需要的朋友可以參考下2014-10-10Android MediaPlayer音頻播放器封裝示例淺析
Android提供了許多方法來(lái)控制播放的音頻/視頻文件和流。其中該方法是通過(guò)一類(lèi)稱(chēng)為MediaPlayer。Android是提供MediaPlayer類(lèi)訪問(wèn)內(nèi)置的媒體播放器的服務(wù),如播放音頻,視頻等為了使用MediaPlayer,我們要調(diào)用這個(gè)類(lèi)的靜態(tài)create()方法2023-04-04Android自定義ViewGroup嵌套與交互實(shí)現(xiàn)幕布全屏滾動(dòng)
這篇文章主要為大家介紹了Android自定義ViewGroup嵌套與交互實(shí)現(xiàn)幕布全屏滾動(dòng)效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01