然後是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;
}
}
}