Android 對話方塊 Dialog

來源:互聯網
上載者:User

標籤:

對話方塊 Dialog

什麼是對話方塊

 對話方塊是在當前的頁面之上彈出的小視窗, 用於顯示一些重要的提示資訊, 提示使用者的輸入,確認資訊,
 
 或顯示某種狀態.如 :  顯示進度條對話方塊, 退出提示.

       對話方塊的特點:

 1, 當前介面彈出的小視窗.

 2, 使用者要與它進行互動, 可以接收使用者輸入的資訊, 也可以反饋資訊給使用者.

      常用對話方塊:

1, 普通對話方塊 AlertDialog

2, 進度條對話方塊  ProgressDialog

3, 日期對話方塊    DatePickerDialog

4, 時間對話方塊    TimePickerDialog

5, 自訂對話方塊  

     常用普通對話方塊  AlertDialog

1, 普通列表對話方塊    setItems  -- onClickListener

2, 單選對話方塊     setSingleChoiceItems -- onClickListener

3, 多選對話方塊     setMultiChoiceItems  --- > onMultiChoiceClickListener 

4, 適配器對話方塊      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, 定義普通對話方塊的構建者    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);        //2, 構建對話方塊    builder.setIcon(R.drawable.img_23);//設定表徵圖    builder.setTitle("提示");//設定標題    builder.setMessage("是否確認退出?");//設定內容        //設定取消按鈕      /**     * text按鈕顯示的文字     * listener     按鈕對應的監聽器     */    builder.setNegativeButton("取消", null);        //設定確定按鈕    builder.setPositiveButton("確定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish();}});        //3, 顯示對話方塊    builder.show();    }    public void showProgressDialog(View v)    {    //1, 得到ProgressDialog的對象    ProgressDialog pDialog = new ProgressDialog(this);        //2, 構建對話方塊    pDialog.setIcon(R.drawable.img_14);    pDialog.setTitle("提示");    pDialog.setMessage("正在載入, 請稍後....");    pDialog.setCancelable(true);//是否可撤銷  true 可以  false 不可以        //設定進度條對話方塊的樣式    //ProgressDialog.STYLE_HORIZONTAL  水平的    //ProgressDialog.STYLE_SPINNER     轉圈的    pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);            //3, 顯示對話方塊    pDialog.show();    //pDialog.dismiss();//對話方塊消失        pDialog.setProgress(50);//設定進度值,  在顯示對話後,才可以設定        }    public void showDatePickerDialog(View v)    {    //擷取系統的當前日期    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, 建立帶有日期選取器的對話方塊    /**     * context內容物件     * callBackonDateSetListener(日期選取器上的"確定"按鈕監聽器)     * year預設的年     * monthOfYear  預設的月份     * dayOfMonth   預設的日期     */    DatePickerDialog dPDialog  = new DatePickerDialog(this,new OnDateSetListener() {    /**     * DatePicker view  日期選取器     */@Overridepublic void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {//選擇後的日期監聽Toast.makeText(MainActivity.this, year+"-"+(monthOfYear+1)+"-"+dayOfMonth, Toast.LENGTH_SHORT).show();}}, year, monthOfYear, dayOfMonth);            //2, 顯示對話方塊    dPDialog.show();    }    public void showTimePickerDialog(View v)    {    //1, 建立帶有時間選取器的對話方塊    /**     * context    內容物件     * callBack  onTimeSetListener     * hourOfDay  預設的小時     * minute    預設的分鐘數      * is24HourView 是否24小時制     */    TimePickerDialog tpDialog = new TimePickerDialog(this, new OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker view, int hourOfDay, int minute) {Toast.makeText(MainActivity.this, hourOfDay + " :" + minute, Toast.LENGTH_SHORT).show();}}, 15, 17, true);        //2, 顯示對話方塊    tpDialog.show();    }    //自訂對話方塊(在普通對話方塊基礎上實現)    public void showCustomDialog(View v)    {    //1, 得到普通對話方塊的構建者    AlertDialog.Builder builder = new AlertDialog.Builder(this);        //2, 構建對話方塊    builder.setIcon(R.drawable.img_23);    builder.setTitle("使用者登陸");            //3, 為對話方塊設定自訂的視圖    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);            //為對話方塊添加 按鈕    builder.setNegativeButton("取消", null);        builder.setPositiveButton("登陸", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String info = name.getText().toString()+",   "+ pwd.getText().toString();Toast.makeText(MainActivity.this, info, Toast.LENGTH_SHORT).show();}});        //4, 顯示對話方塊    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;//單選列表的 中間轉接    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                tv = (TextView) findViewById(R.id.tv);    }    //普通列表對話方塊    public void showCommon(View v)    {    //1, 得到普通對話方塊的構建者    AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setIcon(R.drawable.ic_launcher);    builder.setTitle("選擇顏色");        //2, 設定列表    //getResources().getStringArray(id)    builder.setItems(R.array.colors, new OnClickListener() {    /**     * DialogInterface dialog   對話方塊     * int which當前選中的item 從0開始     */@Overridepublic 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, 顯示對話方塊    builder.show();    }        //單選列表    public void showSingle(View v)    {    //1, 得到普通對話方塊的構建者    AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setIcon(R.drawable.ic_launcher);    builder.setTitle("設定文字大小");        //2, 設定單選列表    /**     * items選項資源的ID   R.array.sizes     * checkedItem  預設選中的item的下標, 如果沒有預設選中, 那麼設定為-1     * listener監聽器     */    builder.setSingleChoiceItems(R.array.sizes, -1, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 把當前選中的Item的下標 賦值給全域的變數  positionposition = which;}});        builder.setPositiveButton("確定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO 根據全域的position  判斷該執行什麼樣的操作switch (position) {case 0:tv.setTextSize(20);break;case 1:tv.setTextSize(30);break;case 2:tv.setTextSize(40);break;}}});            //3, 顯示對話方塊    builder.show();    }    //多選列表    public void showMulti(View v)    {    //1, 得到普通對話方塊的構建者    AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setIcon(R.drawable.ic_launcher);    builder.setTitle("設定內容");        //2, 設定多選列表    /**     * items資源的ID     * checkedItems 當前選中的Item     * listener監聽器     */    //得到所有的資料    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目前的交談框     * int which當前選擇的Item下標     * boolean isChecked當前選擇Item的狀態     */@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {//改變boolean[] 中狀態checkedItems[which] = isChecked;}});        builder.setPositiveButton("確定", new OnClickListener() {@Overridepublic 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, 顯示對話方塊    builder.show();    }    //適配器列表    public void showAdapter(View v)    {    //1, 得到普通對話方塊的構建者    AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setIcon(R.drawable.ic_launcher);    builder.setTitle("選擇設定");        //2, 設定適配器        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() {@Overridepublic 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, 顯示對話方塊    //builder.show();    builder.create().show();    }}


Android 對話方塊 Dialog

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.