对话框的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;
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值