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();
        }
    }
}

效果圖:
在這裏插入圖片描述

若文章中有錯誤的地方歡迎大家反饋或者留言,十分感謝!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章