Android学习笔记(十一)——一些高级控件的使用

【第一部分】历史文章:
Android学习笔记(一)——创建第一个Android项目
Android学习笔记(二)android studio基本控件及布局(实现图片查看器)
Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像)
Android学习笔记(四)Android 中Activity页面的跳转及传值
Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单
Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务
Android学习笔记(七)——数据存储(共享参数SharedPreferences)
Android学习笔记(八)——数据存储(SD卡文件操作)
Android学习笔记(九)——网络技术
Android学习笔记(十)——实现新闻列表案例
【第二部分】主要问题解决:
Android Studio(存)读取不了SD卡上的文件——【已解决】

一、日期时间控件。

1、日期选择器DatePicker控件
DatePicker控件不是,弹窗模式,而是占据了页面的一块区域,并且不会自动的关闭。按照习惯来说,日期控件应该在当前页面弹出,选择完成日期后,就把控件关掉。比如:当我们要进行在文本框中填入日期时,当我们编辑文本框的时候,将会弹出日期让我们进行选择输入。因此,DatePicker不适合直接使用,在实际开发中使用的是已经封装好的日期选择对话框DatePickerDialog
下面就来进行介绍DatePickerDialog,DatePickerDialog相当于在AlertDialog上加载了DatePicker。用起来更简单,只需要调用构造函数设置一下当前年、月、日,然后调用show方法即可弹出日期对话框。
日期选择事件由监听器OnDateSetListener负责响应,在该监听器中实现onDateSet方法。
注意:在onDateSet方法的月份参数,应该进行+1操作,因为一月份对应的数值是0,十二月对应的数值是11
DatePickerDiaolog有两个构造函数:

DatePickerDialog(Context context, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)

DatePickerDialog(Context context, int theme, DatePickerDialog.OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth)

  • 第一个构造函数没有指定theme就是用工程的默认theme下的DatePickerDialog。
  • 第二个构造函数的第二个参数表示的就是DatePickerDialog的几种风格了。
    可以有以下的常量可以选择。
    在这里插入图片描述

2、时间选择器
当然,在实际开发中也不直接用TimePicker,却用的是封装好的时间选择器TimePickerDialog。该对话框的用法与DatePickerDialog相类似,不同点如下:
构造函数传的是当前的小时与分钟数,最后一个参数表示的是是否使用24小时制,使用则是true
时间选择监听器是OnTimeSetListener,对应的是实现方法onTimeSet,在该方法中获得用户选择好的小时与分钟。

下面是一个简单的实例:

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="cn.edu.hznu.chapter5.MainActivity">
    <Button
        android:id="@+id/btn_date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="请选择日期"
        android:textColor="#ff0000"
        android:textSize="20sp" />
    <Button
        android:id="@+id/btn_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="请选择时间"
        android:textColor="#ff0000"
        android:textSize="20sp" />
    <TextView
        android:id="@+id/tv_date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#ff0000"
        android:textSize="17sp" />
    <TextView
        android:id="@+id/tv_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#ff0000"
        android:textSize="17sp" />
</LinearLayout>

MainActivity.java

package cn.edu.hznu.chapter5;
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
public class MainActivity extends AppCompatActivity implements
        OnClickListener {
    private TextView tv_date,tv_time;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_date = (TextView) findViewById(R.id.tv_date);
        tv_time = (TextView) findViewById(R.id.tv_time);
        findViewById(R.id.btn_date).setOnClickListener(this);
        findViewById(R.id.btn_time).setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        if(v.getId()==R.id.btn_date) {
            Calendar calendar = Calendar.getInstance();
            DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
                    String desc = String.format("您选择的日期是%d年%d月%d日",
                            i, i1 + 1, i2);
                    tv_date.setText(desc);
                }
            }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
            dialog.show();
        }
        if(v.getId()==R.id.btn_time){
            Calendar calendar = Calendar.getInstance();
            TimePickerDialog dialog=new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker timePicker, int i, int i1) {
                    String desc = String.format("您选择的时间是%d时%d分", i, i1);
                    tv_time.setText(desc);
                }
            },calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true);
            dialog.show();
        }
    }
}

效果图:
在这里插入图片描述

若文章中有错误的地方欢迎大家反馈或者留言,十分感谢!!!

猜你喜欢

转载自blog.csdn.net/weixin_43759352/article/details/105800089