赵雅智_textview自定义日期

实现效果:

自定义日期实现步骤:

  1. 设置textview点击事件,弹出自定义的对话框
  2. 重写创建对话框
  3. 准备日期监听器,给对话框赋值

日期比较步骤:

  1. 获取textview值并判断是否为空
  2. 设置显示的日期格式
  3. 使用Date.before()函数判断你所选的时间是否是今天之前,或者时间1是否在时间2之前

layout布局:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android_date"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.android_date.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity

package com.example.android_date;

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

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 自定义日期组件
 *
 * @author yazhizhao 20142014-10-23上午11:45:04
 */
public class MainActivity extends Activity {
	private int mMonth;
	private int mDay;
	private int mYear;
	private TextView tvDate1;
	private TextView tvDate2;
	private String tvDate1Str;
	private String tvDate2Str;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tvDate1 = (TextView) findViewById(R.id.tv_date1);
		tvDate2 = (TextView) findViewById(R.id.tv_date2);

		// 为日期控件赋值
		final Calendar c = Calendar.getInstance();
		mYear = c.get(Calendar.YEAR);
		mMonth = c.get(Calendar.MONTH);
		mDay = c.get(Calendar.DAY_OF_MONTH);
		tvDate1.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				// TODO Auto-generated method stub
				showDialog(1);
			}
		});
		tvDate2.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				showDialog(2);
			}
		});
	}

	// 重写创建对话框方法
	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case 1:
			// 把Activity上下文、日期设置监听器、以及日期的年月日都作为参数传给那个新成立的对话框组件
			return new DatePickerDialog(this, dsl, mYear, mMonth, mDay);
		case 2:
			// 把Activity上下文、日期设置监听器、以及日期的年月日都作为参数传给那个新成立的对话框组件
			return new DatePickerDialog(this, ds2, mYear, mMonth, mDay);
		}
		return null;
	}

	// 准备日期设置监听器
	private OnDateSetListener dsl = new DatePickerDialog.OnDateSetListener() {
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			mYear = year;
			mMonth = monthOfYear;
			mDay = dayOfMonth;
			tvDate1.setText(mYear + "-" + (mMonth + 1) + "-" + mDay);

		}
	};
	// 准备日期设置监听器
	private OnDateSetListener ds2 = new DatePickerDialog.OnDateSetListener() {
		public void onDateSet(DatePicker view, int year, int monthOfYear,
				int dayOfMonth) {
			mYear = year;
			mMonth = monthOfYear;
			mDay = dayOfMonth;
			tvDate2.setText(mYear + "-" + (mMonth + 1) + "-" + mDay);

		}

	};

	/**
	 * 对比日期的点击事件
	 *
	 * @author yazhizhao 20142014-10-23上午11:55:11
	 * @param v
	 */
	public void click(View v) {
		Date time1 = null;
		Date time2 = null;

		// 判断时间1和时间2是否为空
		tvDate1Str = tvDate1.getText().toString().trim();
		tvDate2Str = tvDate2.getText().toString().trim();
		if (tvDate1Str == null || "".equals(tvDate1Str)) {
			Toast.makeText(getApplicationContext(), "时间1不为空",
					Toast.LENGTH_SHORT).show();
			return;
		} else if (tvDate2Str == null || "".equals(tvDate2Str)) {
			Toast.makeText(getApplicationContext(), "时间2不为空",
					Toast.LENGTH_SHORT).show();
			return;

		}

		// 日期使用"yyyy-MM-dd"格式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
		try {
			time1 = sdf.parse(tvDate1Str);
			time2 = sdf.parse(tvDate2Str);
		} catch (ParseException e) {

			e.printStackTrace();
		}

		// 判断时间1,2前后
		Date nowdate = new Date();
		if (time1.before(nowdate)) {
			Toast.makeText(getApplicationContext(), "请选择正确的时间1",
					Toast.LENGTH_SHORT).show();
			return;
		} else if (time2.before(time1)) {
			Toast.makeText(getApplicationContext(), "请选择正确的时间2",
					Toast.LENGTH_SHORT).show();
			return;

		} else {
			Toast.makeText(getApplicationContext(), "ok", Toast.LENGTH_SHORT)
					.show();
		}

	}
}

运行效果:

时间: 2024-10-29 19:11:14

赵雅智_textview自定义日期的相关文章

赵雅智:android教学大纲

带下划线为具体内容链接地址,点击后可跳转,希望给大家尽一些微薄之力,目前还在整理中 教学章节 教学内容 学时安排 备注 1 Android快速入门 2 Android模拟器与常见命令 3 Android用户界面设计 4 Android网络通信及开源框架引用 5 线程与消息处理 6 数据存储及访问 7 Android基本单元应用activity 8 Android应用核心Intent 9 资源访问 10 ContentProvider实现数据共享 11 BroadcastReceiver 12 S

赵雅智_Android_Canvas

Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0. android.graphics和android.graphics.drawable包 大部分2D使用的api都在android.graphics和android.graphics.drawable包中. 他们提供了图形处理相关的: Canvas.ColorFilter.Point(点)和RetcF(矩形)等 还有一些动画相关的:AnimationDrawable. Bit

赵雅智_运用Bitmap和Canvas实现图片显示,缩小,旋转,水印

上一篇已经介绍了Android种Bitmap和Canvas的使用,下面我们来写一个具体实例 http://blog.csdn.net/zhaoyazhi2129/article/details/32136179 运行效果: 主要代码 package com.example.guaguale; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import and

赵雅智_ListView_BaseAdapter

Android界面中有时候需要显示稍微复杂的界面时,就需要我们自定义一个adapter,而此adapter就要继承BaseAdapter,重新其中的方法. Android中Adapter类其实就是把数据源绑定到指定的View上,然后再返回该View,而返回来的这个View就是ListView中的某一行item. 这里返回来的View正是由我们的Adapter中的getView方法返回的.这样就会容易理解数据是怎样一条一条显示在ListView中的. 具体事例: 数据库我们还使用之前创建的 布局文

赵雅智_BaseAdapter

Android界面中有时候需要显示稍微复杂的界面时,就需要我们自定义一个adapter,而此adapter就要继承BaseAdapter,重新其中的方法. Android中Adapter类其实就是把数据源绑定到指定的View上,然后再返回该View,而返回来的这个View就是ListView中的某一行item. 这里返回来的View正是由我们的Adapter中的getView方法返回的.这样就会容易理解数据是怎样一条一条显示在ListView中的. 具体事例: 数据库我们还使用之前创建的 布局文

赵雅智:js知识点汇总

赵雅智:js知识点汇总,布布扣,bubuko.com

赵雅智_service生命周期

Android中的服务和windows中的服务是类似的东西,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序. 服务的开发步骤 第一步:继承Service类 public class SMSService extends Service { } 第二步:在AndroidManifest.xml文件中的<application>节点里对服务进行配置: <service android:name=".SMSService" />

赵雅智_service电话监听2加接通电话录音

步骤: 创建CallStateService继承Service 取得电话服务 监听电话动作 电话监听的对象 没有电话时 停止刻录 重设 刻录完成一定要释放资源 电话响铃时 从麦克风采集声音 内容输出格式 音频编码方式 获取sd卡目录并存入 电话接通时 开始录制 电话监听的行为 启动service 注册service并添加监听电话状态的权限 监听电话状态权限 sd卡读写权限 音频录制权限 AndroidManifest.xml <?xml version="1.0" encodin

赵雅智_android http get请求

<!-- 添加网络访问权限 --> <uses-permission android:name="android.permission.INTERNET"/> 布局文件 activity_login.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content&q