布局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;
}
}
}