【显示日期选择和时间选择】

DateTimePickDialogUtil 类

package com.android.spacecamera;

import java.text.SimpleDateFormat;
import java.util.Calendar;
 
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
 
public class DateTimePickDialogUtil implements OnDateChangedListener,OnTimeChangedListener{
	private DatePicker datePicker;
	private TimePicker timePicker;
	private AlertDialog ad;
	private String dateTime;
	private String initDateTime;
	private Activity activity;
 
	/**
	 * 日期时间弹出选择框构造函数
	 * 
	 * @param activity
	 *            :调用的父activity
	 * @param initDateTime
	 *            初始日期时间值,作为弹出窗口的标题和日期时间初始值
	 */
	public DateTimePickDialogUtil(Activity activity, String initDateTime) {
		this.activity = activity;
		this.initDateTime = initDateTime;
 
	}
 
	public void init(DatePicker datePicker, TimePicker timePicker) {
		Calendar calendar = Calendar.getInstance();
		if (!(null == initDateTime || "".equals(initDateTime))) {
			calendar = this.getCalendarByInintData(initDateTime);
		} else {
			initDateTime = calendar.get(Calendar.YEAR) + "年"
					+ calendar.get(Calendar.MONTH) + "月"
					+ calendar.get(Calendar.DAY_OF_MONTH) + "日 ";
//					+ calendar.get(Calendar.HOUR_OF_DAY) + ":"
//					+ calendar.get(Calendar.MINUTE);
		}
 
		datePicker.init(calendar.get(Calendar.YEAR),
				calendar.get(Calendar.MONTH),
				calendar.get(Calendar.DAY_OF_MONTH), this);
//		timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
//		timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE));
	}
 
	/**
	 * 弹出日期时间选择框方法
	 * 
	 * @param startDateTime
	 *            :为需要设置的日期时间文本编辑框
	 * @return
	 */
	public AlertDialog dateTimePicKDialog(final TextView startDateTime) {
		LinearLayout dateTimeLayout = (LinearLayout) activity
				.getLayoutInflater().inflate(R.layout.common_datetime, null);
		datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);
		timePicker = (TimePicker) dateTimeLayout.findViewById(R.id.timepicker);
		init(datePicker, timePicker);
//		timePicker.setIs24HourView(true);
//		timePicker.setOnTimeChangedListener(this);
 
		ad = new AlertDialog.Builder(activity)
				.setTitle(initDateTime)
				.setView(dateTimeLayout)
				.setPositiveButton("确定", new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int whichButton) {
						startDateTime.setText(dateTime);
					}
				})
				.setNegativeButton("取消", new DialogInterface.OnClickListener() {
					public void onClick(DialogInterface dialog, int whichButton) {
						startDateTime.setText(initDateTime);
					}
				}).show();
 
		onDateChanged(null, 0, 0, 0);
		return ad;
	}
 
	public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
		onDateChanged(null, 0, 0, 0);
	}
 
	public void onDateChanged(DatePicker view, int year, int monthOfYear,
			int dayOfMonth) {
		// 获得日历实例
		Calendar calendar = Calendar.getInstance();
 
		calendar.set(datePicker.getYear(), datePicker.getMonth(),
				datePicker.getDayOfMonth());
//				, timePicker.getCurrentHour(),
//				timePicker.getCurrentMinute());
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
 
		dateTime = sdf.format(calendar.getTime());
		ad.setTitle(dateTime);
	}
 
	/**
	 * 实现将初始日期时间分成年 月 日 时 分 秒,并赋值给calendar
	 * 
	 * @param initDateTime
	 *            初始日期时间值 字符串型
	 * @return Calendar
	 */
	private Calendar getCalendarByInintData(String initDateTime) {
		Calendar calendar = Calendar.getInstance();
 
		// 将初始日期时间分成年 月 日 时 分 秒
		String date = spliteString(initDateTime, "日", "index", "front"); // 日期
		String time = spliteString(initDateTime, "日", "index", "back"); // 时间
 
		String yearStr = spliteString(date, "年", "index", "front"); // 年份
		String monthAndDay = spliteString(date, "年", "index", "back"); // 月日
 
		String monthStr = spliteString(monthAndDay, "月", "index", "front"); // 月
		String dayStr = spliteString(monthAndDay, "月", "index", "back"); // 日
 
//		String hourStr = spliteString(time, ":", "index", "front"); // 时
//		String minuteStr = spliteString(time, ":", "index", "back"); // 分
 
		int currentYear = Integer.valueOf(yearStr.trim()).intValue();
		int currentMonth = Integer.valueOf(monthStr.trim()).intValue() - 1;
		int currentDay = Integer.valueOf(dayStr.trim()).intValue();
//		int currentHour = Integer.valueOf(hourStr.trim()).intValue();
//		int currentMinute = Integer.valueOf(minuteStr.trim()).intValue();
 
		calendar.set(currentYear, currentMonth, currentDay);
		//, currentHour,currentMinute
		return calendar;
	}
 
	/**
	 * 截取子串
	 * 
	 * @param srcStr
	 *            源串
	 * @param pattern
	 *            匹配模式
	 * @param indexOrLast
	 * @param frontOrBack
	 * @return
	 */
	public static String spliteString(String srcStr, String pattern,
			String indexOrLast, String frontOrBack) {
		String result = "";
		int loc = -1;
		if (indexOrLast.equalsIgnoreCase("index")) {
			loc = srcStr.indexOf(pattern); // 取得字符串第一次出现的位置
		} else {
			loc = srcStr.lastIndexOf(pattern); // 最后一个匹配串的位置
		}
		if (frontOrBack.equalsIgnoreCase("front")) {
			if (loc != -1)
				result = srcStr.substring(0, loc); // 截取子串
		} else {
			if (loc != -1)
				result = srcStr.substring(loc + 1, srcStr.length()); // 截取子串
		}
		return result;
	}

}

date_time_picker.xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/datepicker_settings"
       android:layout_width="fill_parent"
       android:layout_height="match_parent"
       android:orientation="horizontal"
       android:background="#336699"
       android:layout_gravity="center_horizontal" >
       
     <LinearLayout
           android:layout_width="fill_parent"
           android:layout_height="match_parent"
           android:layout_marginTop="20dp"
           android:layout_gravity="center_horizontal"
           android:weightSum="2"
           android:orientation="vertical">
           
          <LinearLayout android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal"
                        android:layout_marginTop="20dp"
                        android:layout_weight="1">
              
                 <TextView android:id="@+id/inputDate"
                   android:layout_width="wrap_content"
                   android:layout_gravity="center"
                   android:textSize="24sp"
                   android:layout_marginLeft="64dp"
                   android:layout_height="wrap_content"/>
                 
                    <TextView android:id="@+id/inputtime"
                   android:layout_width="wrap_content"
                   android:layout_gravity="center"
                   android:textSize="24sp"
                   android:layout_marginRight="30dp"
                   android:layout_height="wrap_content"/>
                 
          </LinearLayout>
          
            <LinearLayout android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:orientation="vertical"
                        android:layout_gravity="center_vertical"

                        android:layout_weight="1">
                    
              <Button android:id="@+id/setting_date"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
             android:textSize="20sp"
            android:text="@string/set_date"/>
      
        <Button android:id="@+id/setting_time"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
              android:textSize="20sp"
            android:text="@string/set_time"/>
            </LinearLayout>
          
     
     </LinearLayout>
</LinearLayout>
DateTimePickerActivity  类
package com.android.spacecamera;

import java.util.Date;
import java.util.Locale;

import android.app.Activity;
import android.app.TimePickerDialog;
import android.icu.text.DateFormat;
import android.icu.text.SimpleDateFormat;
import android.icu.util.Calendar;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextClock;
import android.widget.TextView;
import android.widget.TimePicker;

public class DateTimePickerActivity extends Activity implements OnClickListener{

/**
 * 时间拾取器界面
 * 
 * @author wwj_748
 * 
 */
	/** Called when the activity is first created. */
	private TextView startDateTime;
	private TextView inputtime;
	private Button settingDate;
	private Button settingTime;
	Date date = new Date(); 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
    SimpleDateFormat sdf1 = new SimpleDateFormat("HH时mm分");
	private String initStartDateTime =sdf.format(date); // 初始化开始时间
	private String initTime=sdf1.format(date);
	 DateFormat format= DateFormat.getDateTimeInstance();
	 Calendar calendar= Calendar.getInstance(Locale.CHINA);
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.date_time_picker);
 
		// 两个输入框
		startDateTime = (TextView) findViewById(R.id.inputDate);
		inputtime=(TextView)findViewById(R.id.inputtime);
		
		settingDate=(Button)findViewById(R.id.setting_date);
		settingTime=(Button)findViewById(R.id.setting_time);
		startDateTime.setText(initStartDateTime);
		inputtime.setText(initTime);
 
		settingDate.setOnClickListener(this);
		
		settingTime.setOnClickListener(this);
		
 
	}
	
	   public static void showTimePickerDialog(Activity activity,int themeResId, final TextView tv, Calendar calendar) {
		   calendar = Calendar.getInstance();               
		   calendar.setTimeInMillis(System.currentTimeMillis());
		   int hour = calendar.get(Calendar.HOUR_OF_DAY);
		   int minute = calendar.get(Calendar.MINUTE);
		   new TimePickerDialog( activity,themeResId,
	                // 绑定监听器
	                new TimePickerDialog.OnTimeSetListener() {
	                    @Override
	                    public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
	                     String sHour = hourOfDay < 10 ? "0" + hourOfDay : "" + hourOfDay;
	                     String sMinute = minute < 10 ? "0" + minute : ""+ minute;
                        tv.setText(sHour + "时" + sMinute+"分");
	                    }
	        } , hour , minute,true).show();   // true表示采用24小时制
	    }
	   
	@Override
	public void onPointerCaptureChanged(boolean hasCapture) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.setting_date:
			DateTimePickDialogUtil dateTimePicKDialog = new DateTimePickDialogUtil(
					DateTimePickerActivity.this,initStartDateTime);
			dateTimePicKDialog.dateTimePicKDialog(startDateTime);
			break;
			
		case R.id.setting_time:
			showTimePickerDialog(this,  4, inputtime, calendar);
			break;

		default:
			break;
		}
		
	}



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值