【第一部分】历史文章:
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();
}
}
}
效果图:
若文章中有错误的地方欢迎大家反馈或者留言,十分感谢!!!