對話框的DatePicker和TimePicker的使用(學習筆記)

佈局xml部分,使用了自定義的控件View_try1,其使用方法跟一般的Button控件類似。這裏權且把它當做Button。

然後是activity:

package com.example.diy_view;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
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 Activity implements OnClickListener{
    View_try1 imageBtn1,imageBtn2;
    final int DATE = 1;
    final int TIME = 2;
    TextView daTextView,timeTextView;
    Calendar calendar =Calendar.getInstance(Locale.CHINA);//全局使用的calendar

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageBtn1=(View_try1) this.findViewById(R.id.btn_right);
        imageBtn2=(View_try1) this.findViewById(R.id.btn_error);
        imageBtn1.setTextViewText("打開時間選擇");
        imageBtn2.setTextViewText("打開日期選擇");
        imageBtn1.setImageResource(R.drawable.blue);
        imageBtn2.setImageResource(R.drawable.blue);
        imageBtn1.setOnClickListener(this);
        imageBtn2.setOnClickListener(this);//以上是根據自定義控件的方法進行的預定義
        daTextView = (TextView)findViewById(R.id.textView2);//用來顯示日期的TextView
        timeTextView = (TextView)findViewById(R.id.textView3);//用來顯示時間的TextView

    }
    private DatePickerDialog.OnDateSetListener listener = //用於檢測日期設定器的變化
            new DatePickerDialog.OnDateSetListener(){  

        @Override
        public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
            calendar.set(Calendar. YEAR , arg1);//重置年份
            calendar.set(Calendar. MONTH , arg2);//重置月份
            calendar.set(Calendar. DAY_OF_MONTH , arg3);//重置日期
            update(DATE);//調用更新日期顯示
        }

    }; 
    private TimePickerDialog.OnTimeSetListener listener2 = //用於檢測時間設定器的變化
            new TimePickerDialog.OnTimeSetListener() {

                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    // TODO Auto-generated method stub
                    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);//設置小時
                    calendar.set(Calendar.MINUTE, minute);//調用分鐘
                update(TIME);//調用更新時間顯示
                }
            };
    @SuppressLint("SimpleDateFormat")
    private void update(int dt) {//case一下是改變日期還是時間
        switch (dt) {
        case DATE:
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); //創建日期格式
            daTextView.setText(simpleDateFormat.format(calendar.getTime()));//按照最新的calendar更新日期顯示
            break;
        case TIME:
            SimpleDateFormat simpleTimeFormat = new SimpleDateFormat("HH-mm");//創建時間格式
            timeTextView.setText(simpleTimeFormat.format(calendar.getTime()));//按照最新的calendar更新時間顯示
            break;
        default:
            break;
        }
    }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.btn_right:
            new DatePickerDialog(MainActivity.this,listener,
                    calendar.get(Calendar. YEAR ),
                    calendar.get(Calendar. MONTH ),
                    calendar.get(Calendar. DAY_OF_MONTH )
                    ).show();    //調用對話框的DatePicker
            break;
        case R.id.btn_error:
            new TimePickerDialog(MainActivity.this, listener2, 
                    Calendar.HOUR_OF_DAY, Calendar.MINUTE, true).show();//調用對話框的TimerPicker
            break;
        default:
            break;
        }
    }
}


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