文档章节

Android UI系列-----时间、日期、Toasts和进度条Dialog

Airship
 Airship
发布于 2015/01/11 02:21
字数 1998
阅读 62
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

复制代码

您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 

如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   

如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 501395377@qq.com  / lzp501395377@gmail.com

如果需要转载,请注明出处,谢谢!!

复制代码

本篇随笔将继续学习Android UI系列中的Dialog,包括DatePickerDialog、TimePickerDialog、Toasts以及ProgressDialog。下面让我们来看看这几种不同的Dialog对话框的使用.

一、DatePickerDialog和TimePickerDialog

DatePickerDialog和TimePickerDialog是Android提供的可以弹出一个日期、时间选择的对话框,我们可以在程序中通过实例化DatePickerDialog和TimePickerDialog来得到一个日期、时间对话框。这两个类都是AlertDialog的子类:

复制代码

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的使用:

我们在布局上定义两个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类:

复制代码

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 对象即可,我们来看看日期和时间弹出框的样子是什么:

当点击Done后,就会分别调用绑定到得监听器,得到我们设置的时间

二、Toasts

Toasts对话框也是非常的简单,其实在之前的一些随笔里面我们已经大量的看到使用了Toast这种对话框来弹出一个信息给我们用户,要注意的是,Toast框是不能够与用户进行交互的,当超过我们设定的时间后,Toast对话框会自动的消失,我们可以直接使用Toast的makeText这个静态方法来实例化一个默认的Toast对象

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

Parameterscontext     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框。

三、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的点点滴滴。


本文转载自:http://www.cnblogs.com/xiaoluo501395377/p/3421727.html

Airship
粉丝 50
博文 1117
码字总数 22567
作品 0
南京
高级程序员
私信 提问
Android用户界面---对话框(dialogs)

对话框通常是一个显示在当前Activity之前的小窗口。它下面的Activity会失去焦点,并且对话框会接受所有的用户交互。对话框通常用于通知用户中断操作的,并且要执行与应用程序内进度直接相关的...

长平狐
2012/10/16
3.3K
0
Android开发指南-用户界面-对话框

创建对话框Creating Dialogs 对话框通常是一个显示在当前活动前面的小窗口。下面的活动失去焦点而由对话框接受所有的用户交互。对话框通常被用来当做通知或者运行中的应用程序相关的短暂活动...

JavaGG
2010/03/24
1K
0
Android软件开发之盘点所有Dialog对话框大合集(一)

对话框大合集 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6601613 雨松MOMO带大家盘点Android 中的对话框 今天我用...

彭博
2012/03/09
121
0
Android软件开发之盘点所有Dialog对话框大合集(一)

对话框大合集 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6601613 雨松MOMO带大家盘点Android 中的对话框 今天我用...

晨曦之光
2012/03/07
377
0
Android中的各种Dialog

下面是自己总结的Android常用的几种Dialog: 1.AlertDialog android中功能最丰富,用途最广的对话框。 // 1 创建一个Builder AlertDialog.Builder builder = new AlertDialog.Builder(this)...

Simpleness
2012/06/13
2.1K
1

没有更多内容

加载失败,请刷新页面

加载更多

dynamic-connectivity 动态连通性问题之 quick-union 算法

quick-union 的思想是:若对象 p 的 root_id 和对象 q 的 root_id 相等,则认为 p 和 q 连通。 若要将对象 p 和对象 q 连通(已知两对象未连通),则将 p 的 root_id 的值设为 q 的 root_id ...

Phpythoner_Alei
今天
40
0
OSChina 周六乱弹 —— 实在选不出来就唱国歌

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享阿冗的单曲《你的答案》。--祝大家在2020年都找到自己答案。 《你的答案》- 阿冗 手机党少年们想听歌,请使劲...

小小编辑
今天
27
1
Maven打包可执行Jar包的方法

在使用Java开发中,会使用到将工程打包成可执行的jar包的情况,那么在maven中怎么将项目中的依赖包都添加到jar中呢。在pom.xml中添加一下插件: <build><plugins><plugin><ar...

CapJes
今天
13
0
使用vue 开发地图类系统(openlayers.js)的注意。

使用vue 开发地图类系统的注意。 1、使用地图应该创建的对象 少使用 vue 的data 和计算属性(comments)存数据或是vuex。 为什么要要注意这个问题呢? 答:这个就要了解到vue的实现原理 。原理...

DY-Tao
昨天
10
0
web移动端学习:高德地图demo(一)

在高德地图开发中申请开发者资格,然后在控制台中新建应用,获得KEY; 新建模板HTML文件; <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>地图demo</title><scri......

dxiya
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部