Android UI系列-----時間、日期、Toasts和進度條Dialog

您能夠經過點擊 右下角 的按鈕 來對文章內容做出評價, 也能夠經過左下方的 關注按鈕 來關注個人博客的最新動態。 

若是文章內容對您有幫助, 不要忘記點擊右下角的 推薦按鈕 來支持一下哦   

若是您對文章內容有任何疑問, 能夠經過評論或發郵件的方式聯繫我: 501395377@qq.com  / lzp501395377@gmail.com

若是須要轉載,請註明出處,謝謝!!

本篇隨筆將繼續學習Android UI系列中的Dialog,包括DatePickerDialog、TimePickerDialog、Toasts以及ProgressDialog。下面讓咱們來看看這幾種不一樣的Dialog對話框的使用.java

1、DatePickerDialog和TimePickerDialogandroid

DatePickerDialog和TimePickerDialog是Android提供的能夠彈出一個日期、時間選擇的對話框,咱們能夠在程序中經過實例化DatePickerDialog和TimePickerDialog來獲得一個日期、時間對話框。這兩個類都是AlertDialog的子類:app

java.lang.Object
   ↳     android.app.Dialog
         ↳     android.app.AlertDialog
               ↳     android.app.DatePickerDialog


java.lang.Object
   ↳     android.app.Dialog
         ↳     android.app.AlertDialog
               ↳     android.app.TimePickerDialog

這兩個控件的使用很是的簡單,下面咱們直接經過例子來看看DatePickerDialog和TimePickerDialog的使用:ide

咱們在佈局上定義兩個Button和兩個EditText,當點擊第一個按鈕,彈出一個DatePickerDialog,並獲得選擇的日期顯示在第一個EditText上,點擊第二個按鈕,彈出一個TimePickerDialog,獲得選擇的時間顯示在第二個EditText上。佈局

activity_main.xml:學習

<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="match_parent" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="99dp"
        android:text="DatePickerDialog" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="29dp"
        android:ems="10" >
    </EditText>

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="31dp"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText2"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="24dp"
        android:text="TimePickerDialog" />

</RelativeLayout>

MainActivity類:this

public class MainActivity extends Activity
{
    private Button button;
    private Button button2;
    private EditText editText;
    private EditText editText2;
    private int year, monthOfYear, dayOfMonth, hourOfDay, minute;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button = (Button)findViewById(R.id.button1);
        button2 = (Button)findViewById(R.id.button2);
        editText = (EditText)findViewById(R.id.editText1);
        editText2 = (EditText)findViewById(R.id.editText2);
        
        Calendar calendar = Calendar.getInstance();
        year = calendar.get(Calendar.YEAR);
        monthOfYear = calendar.get(Calendar.MONTH);
        dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
        hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
        minute = calendar.get(Calendar.MINUTE);
        
        button.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                /**
                 * 實例化一個DatePickerDialog的對象
                 * 第二個參數是一個DatePickerDialog.OnDateSetListener匿名內部類,當用戶選擇好日期點擊done會調用裏面的onDateSet方法
                 */
                DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener()
                {
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear,
                            int dayOfMonth)
                    {
                        editText.setText("日期:" + year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
                    }
                }, year, monthOfYear, dayOfMonth);
                
                datePickerDialog.show();
            }
        });
        
        button2.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                /**
                 * 實例化一個TimePickerDialog的對象
                 * 第二個參數是一個TimePickerDialog.OnTimeSetListener匿名內部類,當用戶選擇好時間後點擊done會調用裏面的onTimeset方法
                 */
                TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener()
                {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute)
                    {
                        editText2.setText("Time: " + hourOfDay + ":" + minute);
                    }
                }, hourOfDay, minute, true);
                
                timePickerDialog.show();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

咱們看到,咱們若是要獲得一個日期或者時間彈出框,只須要實例化一個 DatePickerDialog 和 TimePickerDialog 對象便可,咱們來看看日期和時間彈出框的樣子是什麼:spa

當點擊Done後,就會分別調用綁定到得監聽器,獲得咱們設置的時間code

2、Toastsorm

Toasts對話框也是很是的簡單,其實在以前的一些隨筆裏面咱們已經大量的看到使用了Toast這種對話框來彈出一個信息給咱們用戶,要注意的是,Toast框是不可以與用戶進行交互的,當超過咱們設定的時間後,Toast對話框會自動的消失,咱們能夠直接使用Toast的makeText這個靜態方法來實例化一個默認的Toast對象

public static Toast makeText (Context context, CharSequence text, int duration)

Parameters
context  The context to use. Usually your Application or Activity object.
text  The text to show. Can be formatted text.
duration  How long to display the message. Either LENGTH_SHORT or LENGTH_LONG

第一個參數指定了在哪一個窗口下彈出這個Toast框,第二個參數指定了彈出框顯示的文本內容,第三個參數指定了彈出框顯示的時間。

默認的Toast彈出框是彈出一個黑色的框,彈出的位置位於屏幕的下方,咱們還能夠設置咱們自定義的Toast彈出框,並能夠經過 setGravity() 的方法來設置彈出框的位置。

下面咱們也經過一個實例來看看Toast框的使用方法:

<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="match_parent">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="32dp"
        android:text="彈出一個普通Toast框" />
    
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="29dp"
        android:text="彈出一個自定義的Toast框" />

</RelativeLayout>

一樣定義兩個Button,當點擊Button,彈出一個Toast框

     button.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //    實例化一個Toast的對話框
                Toast toast = Toast.makeText(MainActivity.this, "Hello World", Toast.LENGTH_SHORT);
                /*
                 * setGravity方法來設定Toast框的彈出位置,第一個參數指定彈出的方位,第二個參數指定X軸的偏移量
                 * 第三個參數指定Y軸的偏移量
                 */
                toast.setGravity(Gravity.CENTER, 0, 0);
            }
        });

咱們看到當咱們設置了 setGravity()方法後,Toast的彈出框位置就會根據咱們的設置發生變化

     button2.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //    經過LayoutInflater方法來加載咱們自定義的xml佈局文件
                View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.toast, null);
                //    直接經過new的方式獲得一個Toast對象
                Toast toast = new Toast(MainActivity.this);
                //    設置咱們Toast框的彈出內容爲咱們自定義的Toast
                toast.setView(view);
                toast.show();
            }
        });

咱們也能夠經過自定義一個xml佈局文件,而後經過Toast的setView方法來彈出一個咱們自定義的Toast框。

3、ProgressDialog

最後咱們來看一看ProgressDialog,這是一個進度條的彈出框,其也是AlertDialog的一個子類

java.lang.Object
   ↳     android.app.Dialog
         ↳     android.app.AlertDialog
               ↳     android.app.ProgressDialog

ProgressDialog能夠顯示一個包含一個文本message或者是一個自定義的View的帶進度條的彈出框。注意:文本message和自定義的View只能存在一個

若是要建立一個ProgressDialog,咱們能夠直接經過new的方式來建立,由於進度條有兩種樣式,一種是水平的進度條,一種是圓圈進度條,因此咱們還能夠設置進度條彈出框的顯示樣式。下面咱們經過一個實例來分別看看這兩種樣式的進度條彈出框:

<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="match_parent">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="42dp"
        android:text="彈出一個圓形的進度條框" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="44dp"
        android:text="彈出一個水平的進度條框" />
    
</RelativeLayout>

圓形的進度條框:

     button.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //    實例化一個ProgressDialog
                ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setTitle("提示信息");
                progressDialog.setMessage("正在下載中,請稍後......");
                //    設置ProgressDialog的顯示樣式,ProgressDialog.STYLE_SPINNER表明的是圓形進度條
                progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                progressDialog.show();
            }
        });

咱們能夠點擊屏幕其餘部分,而後這個進度條彈出框就會消失,若是但願其不消失能夠調用

progressDialog.setCancelable(false);    //    設置彈出框不能被取消

再來看看水平的進度條框:

     button2.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //    實例化一個ProgressDialog
                ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setTitle("提示信息");
                progressDialog.setMessage("正在下載中,請稍後......");
                //    設置最大進度,ProgressDialog的進度範圍是從1-10000
                progressDialog.setMax(100);
                //    設置主進度
                progressDialog.setProgress(50);
                //    設置第二進度
                progressDialog.setSecondaryProgress(70);
                //    設置ProgressDialog的顯示樣式,ProgressDialog.STYLE_HORIZONTAL表明的是水平進度條
                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDialog.show();
            }
        });

以上就是兩種進度條的使用方法

總結:本篇隨便主要講解了DatePickerDialog、TimePickerDialog、Toasts和ProgressDialog這四種彈出框的使用方法,在後續的隨筆當中,將會繼續記錄學習Android的點點滴滴。

相關文章
相關標籤/搜索