- 浏览: 148431 次
文章分类
最新评论
-
zhufoxmailcn:
有希望了!但原能解决小米二电信与4G卡的短信兼容性问题
android无法自动识别sim卡中短信中心号码(SMSC刷新error)的解决方法 -
dss16694:
hotdll 写道l楼主一不小心泄露了自己的手机号码?那是短信 ...
android无法自动识别sim卡中短信中心号码(SMSC刷新error)的解决方法 -
hotdll:
l楼主一不小心泄露了自己的手机号码?
android无法自动识别sim卡中短信中心号码(SMSC刷新error)的解决方法 -
hotdll:
hotdll 写道我的手机是E10I 分辨率为240*320的 ...
CM7最新联系人代码(追加自动IP拨号、拼音首字母快速检索等功能) -
hotdll:
我的手机是E10I 分辨率为240*320的,miniCM7, ...
CM7最新联系人代码(追加自动IP拨号、拼音首字母快速检索等功能)
DatePicker:
java.lang.Object | ||||
↳ | android.view.View | |||
↳ | android.view.ViewGroup | |||
↳ | android.widget.FrameLayout | |||
↳ | android.widget.DatePicker |
DatePicker是一个选择日期的控件。
与DataPicker相似的一个控件是TimePicker,用法相同.
如何使用DatePicker:
1、先写一个布局,该布局中包含一个TextView用来显示日期,另有一个Button,用来显示DatePicker控件。
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
- <TextView android:id="@+id/dateDisplay"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text=""/>
- <Button android:id="@+id/pickDate"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="改变日期"
- />
- </LinearLayout>
2、产生一个DatePicker的对话框,在主activity中:
- public class DatePickerDemo extends Activity {
- private TextView text = null;
- private Button button = null;
- //用来保存年月日:
- private int mYear;
- private int mMonth;
- private int mDay;
- //声明一个独一无二的标识,来作为要显示DatePicker的Dialog的ID:
- static final int DATE_DIALOG_ID = 0;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- text = (TextView)findViewById(R.id.dateDisplay);
- button = (Button)findViewById(R.id.pickDate);
- //给button添加事件监听器:
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- //调用Activity类的方法来显示Dialog:调用这个方法会允许Activity管理该Dialog的生命周期,
- //并会调用 onCreateDialog(int)回调函数来请求一个Dialog
- showDialog(DATE_DIALOG_ID);
- }
- });
- //获得当前的日期:
- final Calendar currentDate = Calendar.getInstance();
- mYear = currentDate.get(Calendar.YEAR);
- mMonth = currentDate.get(Calendar.MONTH);
- mDay = currentDate.get(Calendar.DAY_OF_MONTH);
- //设置文本的内容:
- text.setText(new StringBuilder()
- .append(mYear).append("年")
- .append(mMonth + 1).append("月")//得到的月份+1,因为从0开始
- .append(mDay).append("日"));
- }
- }
这时候当运行程序,点击按键时,会报错:
此时程序应该运行到activity调用showDialog方法,该方法会触发当前activity的onCreateDialog()回调函数的调用,所以我们应该重写当前activity的onCreateDialog()函数,并在其内实例化一个DatePickerDialog,实例化DatePickerDialog需要为其指定事件监听器,所以我们还要为其提供一个事件监听器,完整的activity代码如下:
- import java.util.Calendar;
- import android.app.Activity;
- import android.app.DatePickerDialog;
- import android.app.Dialog;
- import android.app.DatePickerDialog.OnDateSetListener;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.DatePicker;
- import android.widget.TextView;
- public class DatePickerDemo extends Activity {
- private TextView text = null;
- private Button button = null;
- //用来保存年月日:
- private int mYear;
- private int mMonth;
- private int mDay;
- //声明一个独一无二的标识,来作为要显示DatePicker的Dialog的ID:
- static final int DATE_DIALOG_ID = 0;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- text = (TextView)findViewById(R.id.dateDisplay);
- button = (Button)findViewById(R.id.pickDate);
- //给button添加事件监听器:
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- //调用Activity类的方法来显示Dialog:调用这个方法会允许Activity管理该Dialog的生命周期,
- //并会调用 onCreateDialog(int)回调函数来请求一个Dialog
- showDialog(DATE_DIALOG_ID);
- }
- });
- //获得当前的日期:
- final Calendar currentDate = Calendar.getInstance();
- mYear = currentDate.get(Calendar.YEAR);
- mMonth = currentDate.get(Calendar.MONTH);
- mDay = currentDate.get(Calendar.DAY_OF_MONTH);
- //设置文本的内容:
- text.setText(new StringBuilder()
- .append(mYear).append("年")
- .append(mMonth + 1).append("月")//得到的月份+1,因为从0开始
- .append(mDay).append("日"));
- }
- //需要定义弹出的DatePicker对话框的事件监听器:
- private DatePickerDialog.OnDateSetListener mDateSetListener =new OnDateSetListener() {
- public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
- mYear = year;
- mMonth = monthOfYear;
- mDay = dayOfMonth;
- //设置文本的内容:
- text.setText(new StringBuilder()
- .append(mYear).append("年")
- .append(mMonth + 1).append("月")//得到的月份+1,因为从0开始
- .append(mDay).append("日"));
- }
- };
- /**
- * 当Activity调用showDialog函数时会触发该函数的调用:
- */
- @Override
- protected Dialog onCreateDialog(int id) {
- switch (id) {
- case DATE_DIALOG_ID:
- return new DatePickerDialog(this,mDateSetListener,mYear, mMonth, mDay);
- }
- return null;
- }
- }
这样,成功运行,效果如下:
3、还有另一种方式产生DatePicker的对话框,这种方式的思路是将DatePicker控件单独作为一个activity,并由主activity对其发出请求,当选择好日期后,用户点击确定键时,DatePicker的activity会将日期返回给主activity。但是我们希望DatePicker以对话框的形式出现,这就需要我们修改DatePicker的activity的风格属性android:theme
看例子:
首先新建一个activity:如何建:在资源文件的layout目录下定义一个xml文件作为布局文件(datepicker.xml):
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
- <DatePicker
- android:id="@+id/myDatePicker"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- />
- <Button android:id="@+id/mybutton"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="确定"
- />
- </LinearLayout>
定义一个类(DataPickerActivity)继承自Activity,重写其onCreate()函数,并在其内部加载布局文件:
- public class DatePickerActivity extends Activity {
- private Button button = null;
- private DatePicker datePicker = null;
- //用来保存年月日:
- private int mYear;
- private int mMonth;
- private int mDay;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.datepicker);
- button = (Button)findViewById(R.id.mybutton);
- datePicker = (DatePicker)findViewById(R.id.myDatePicker);
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- //待添加
- }
- });
- }
- }
在AndroidManifest.xml文件中声明新的Activity:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.tjx"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".DatePickerDemo"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name=".DatePickerActivity"
- android:label="@string/app_name"
- android:theme = "@android:style/Theme.Dialog">
- </activity>
- </application>
- <uses-sdk android:minSdkVersion="7" />
- </manifest>
注意DatePickerActivity的<activity>元素有一个属性android:theme = "@android:style/Theme.Dialog" 声明该activity以对话框形式出现。这时候我们可以在主activity中发送一个intent来获取结果,这里要用到Activity的startActivityForResult()获得结果数据,我引用了些别人的东西来说明获得结果数据的方法步骤:
有两个Activity,A,B,由A启动B,并传数据给B,B在经过处理后把数据传回给A。举个例子,A是主程序,B是设置参数的Activity,在B修改设置后,要让A重新读取设置,就要用到回传数据.主要是两个函数startActivityForResult onActivityResult
先是A传B:
- Bundle bd = new Bundle();
- bd.putString("Dir", "/sdcard/");
- Intent intent=new Intent();
- intent.putExtras(bd);
- intent.setClass(main.this,location.class);
- startActivityForResult(intent,2);
- //这里的2是我随便写的,代表requestCode,就是用来做个标记,网上的例子好像都是写requestCode,
- //结果我在测试时A没接收到,这里必须填正数
然后就是B接收再传回:
- Intent it = new Intent();
- it.putExtra("Dir",(String) tv1.getText());
- setResult(2, it);//2与前面的A里的2对应
- finish();
A里的接收代码:
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- //B返回时触发
- }
接下来修改我们的代码
在主activity中需要调用startActivityForResult 函数来发送请求intent,并重写onActivityResult回调函数来获得返回的结果:
[java:showcolumns] view plaincopy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
- public class DatePickerDemo extends Activity {
- private TextView text = null;
- private Button button = null;
- //用来保存年月日:
- private int mYear;
- private int mMonth;
- private int mDay;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- text = (TextView)findViewById(R.id.dateDisplay);
- button = (Button)findViewById(R.id.pickDate);
- //给button添加事件监听器:
- button.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Intent intent = new Intent();
- intent.setClass(DatePickerDemo.this, DatePickerActivity.class);
- //DatePickerDemo.this.startActivity(intent);//对比
- DatePickerDemo.this.startActivityForResult(intent, 1000);//数字随意
- }
- });
- }
- //处理返回的结果:
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- mYear = Integer.parseInt(data.getStringExtra("year"));
- mMonth = Integer.parseInt(data.getStringExtra("month"));
- mDay = Integer.parseInt(data.getStringExtra("day"));
- //设置文本的内容:
- text.setText(new StringBuilder()
- .append(mYear).append("年")
- .append(mMonth + 1).append("月")//得到的月份+1,因为从0开始
- .append(mDay).append("日"));
- }
-
- }
相应的,DatePickerActivity也要做修改,返回结果:
[java:showcolumns] view plaincopy
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
- public class DatePickerActivity extends Activity {
- private Button button = null;
- private DatePicker datePicker = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.datepicker);
- button = (Button)findViewById(R.id.mybutton);
- datePicker = (DatePicker)findViewById(R.id.myDatePicker);
- button.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Intent intent = new Intent();
- intent.putExtra("year",datePicker.getYear()+"");
- intent.putExtra("month",datePicker.getMonth()+"");
- intent.putExtra("day",datePicker.getDayOfMonth()+"");
- DatePickerActivity.this.setResult(1000, intent);
- finish();//必须手动finish
- }
- });
- }
- }
运行效果如下:
- public class DatePickerDemo extends Activity {
- private TextView text = null;
- private Button button = null;
- //用来保存年月日:
- private int mYear;
- private int mMonth;
- private int mDay;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- text = (TextView)findViewById(R.id.dateDisplay);
- button = (Button)findViewById(R.id.pickDate);
- //给button添加事件监听器:
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent();
- intent.setClass(DatePickerDemo.this, DatePickerActivity.class);
- //DatePickerDemo.this.startActivity(intent);//对比
- DatePickerDemo.this.startActivityForResult(intent, 1000);//数字随意
- }
- });
- }
- //处理返回的结果:
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- mYear = Integer.parseInt(data.getStringExtra("year"));
- mMonth = Integer.parseInt(data.getStringExtra("month"));
- mDay = Integer.parseInt(data.getStringExtra("day"));
- //设置文本的内容:
- text.setText(new StringBuilder()
- .append(mYear).append("年")
- .append(mMonth + 1).append("月")//得到的月份+1,因为从0开始
- .append(mDay).append("日"));
- }
- }
- public class DatePickerActivity extends Activity {
- private Button button = null;
- private DatePicker datePicker = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.datepicker);
- button = (Button)findViewById(R.id.mybutton);
- datePicker = (DatePicker)findViewById(R.id.myDatePicker);
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Intent intent = new Intent();
- intent.putExtra("year",datePicker.getYear()+"");
- intent.putExtra("month",datePicker.getMonth()+"");
- intent.putExtra("day",datePicker.getDayOfMonth()+"");
- DatePickerActivity.this.setResult(1000, intent);
- finish();//必须手动finish
- }
- });
- }
- }
发表评论
-
读懂diff
2015-09-10 16:50 606转自http://www.ruanyifeng.com/bl ... -
【转】努比亚手机玩转双系统
2014-08-21 16:16 0转自miui论坛:http://www. ... -
Z7 MAX 原厂ROM内核修改
2014-08-21 16:04 0努比亚的Z7 MAX出厂时预装NUBIA UI,说实话不咋地 ... -
(转)boot.img的结构
2014-08-21 15:58 1010转自CSDN:http://blog.csdn.net/z ... -
android手机霍尔开关的介绍
2014-08-11 15:24 9461转自CSDN:http://blog.csdn.net/wl ... -
(转)Ubuntu11.10(32位)编译android常见错误(30种常见的)
2014-04-01 13:58 0开始正式编译,在源码目录下make即可。 make ... -
Mokee适配教程(从CM10适配)
2013-09-10 11:27 2564转自魔趣论坛,原始链接为: http://bbs.mfu ... -
ubuntu 12.04 android 编译环境搭建
2013-07-21 06:30 980参考:http://source.android. ... -
miui V5收费主题破解
2013-04-14 01:17 0看到有个家伙在淘宝上卖这东西,感觉有点过分,号称历时2个月才 ... -
Scrolling cache关闭
2013-04-14 00:51 0Scrolling cache关闭后,感觉没什么效果吧。可以用 ... -
ubuntu 12.04的代理设置
2013-04-09 15:48 1715ubuntu 12.04的代理设置 ... -
重新打包ubi镜像
2013-03-18 15:51 2266从网上了解到ubi image不能像其他格式的文件系统ima ... -
为android增加重启菜单
2013-03-17 16:06 1937转自:http://blog.csdn.net/zzp16/ ... -
小米更改第一屏
2013-03-12 11:39 914su dd if=/sdcard/emmc_appsboo ... -
远程发送开机指令
2013-02-28 15:26 1657转发一段用java发送远程开机数据包的代码: 另外,在线发 ... -
tesseract3语言训练
2013-01-06 23:26 1169http://blog.wudilabs.org/entry/ ... -
安卓窗口动画修改制作心得,定制属于你自己的特效动画
2012-12-26 13:07 2054转载自:http://www.miui.com/thread- ... -
(转)android系统特效详解和修改方法
2012-12-20 12:03 1510转自安智网:http://bbs.anzhi.com/foru ... -
socket编程
2012-08-01 17:06 1060暂时先贴下地址,省的忘记: http://duguyi ... -
CM9(4.0.4)状态栏美化(青白色风格)
2012-07-31 23:35 2977以下操作均在SystemUI.apk反编译所得文件的基础上进行 ...
相关推荐
在Android开发中,日期时间选择控件是用户界面中常见且重要的组成部分,它允许用户方便地选择日期或时间。在Android SDK中,内置了DatePicker和TimePicker两种原生控件,但有时候,开发者可能需要更加强大、定制化的...
在Android开发中,时间日期控件是用户界面中常见的组件,用于让用户选择日期或时间。在本示例中,我们关注的是如何在Android应用中添加并使用这些控件。我们将探讨如何通过添加按钮来触发日期和时间的选择,并将选定...
在Android开发中,日期区间选择控件是一种常用的用户界面组件,尤其在预订系统、日程管理等场景下不可或缺。本文将深入探讨如何实现一个能够选取年月区间的自定义控件,以及涉及到的相关技术点。 首先,我们需要...
在Android开发中,为了提供用户友好的界面,我们经常需要使用各种控件来展示和交互数据,其中之一就是滚动日期控件。"android滚动日期控件"通常指的是Android系统中的Wheel View或者NumberPicker组件,它们允许用户...
在"android 用户自定义日期控件 可拖动"的描述中,提到了该控件不仅可以显示日期,还可以显示时间,甚至同时显示日期和时间,这意味着它具备较高的灵活性。用户在导入这个控件后,只需运行应用,就能立即查看到其...
在Android开发中,系统提供了许多内置的UI控件,其中包括日期选择器DatePicker。然而,有时候开发者需要根据项目需求对默认的控件进行自定义,使其更符合应用的风格或者提供更丰富的交互体验。本篇文章将深入探讨...
"2021-辅助类库-Android 非常漂亮的滚动选择日期控件.zip"这个资源包就是一个专门针对这一需求的解决方案。它提供了一个美观且易于使用的滚动选择日期的控件,使得用户可以方便地通过滚动方式选取日期,而不是传统的...
在Android应用开发中,UI设计和用户体验是至关重要的部分,其中日期选择控件是一个常见的功能需求,例如在日程安排、生日输入等场景。本文将详细介绍一个名为"Android漂亮的日期选择控件"的资源,它提供了美观且易于...
"android 定制日期控件"和"android 滚动日期控件"的描述,表明我们将探讨如何在Android应用中创建一个可滚动的选择日期的自定义视图。这个控件可能是一个替代系统默认的DatePicker,提供更个性化的交互方式。 日期...
在Android开发中,日期选择控件是用户界面中常见的组件,用于让用户方便地选取日期。在给定的“Android 日期选择控件”主题中,我们关注的是一个特别设计的控件,它允许用户通过上下滑动的方式进行交互,并且在选定...
"Android 非常漂亮的滚动选择日期控件"是一个旨在提供美观、易用的日期选择体验的解决方案。这个控件可能采用了自定义视图或者现有的库,如`DatePicker`或第三方库,如`Material-Design-Libraries`等,来实现滚动...
【标题】"H5 IOS Android 通用日期控件"指的是一个可以跨平台使用的HTML5(H5)组件,它能够为iOS和Android设备提供统一的日期选择功能。这个控件通常是一个JavaScript库或者CSS框架,使得开发者在创建Web应用时,...
在Android开发中,为了提供用户友好的交互体验,开发者经常需要自定义各种控件,其中滚轮式日期和时间选择控件是一种常见的需求。这种控件通常用于设置事件的日期和时间,比如日历应用、闹钟设定等场景。本文将深入...
在Android开发中,有时我们可能需要为应用提供更加个性化的用户界面,这包括自定义时间日期控件。本文将深入探讨如何在Android中创建自定义的时间日期选择器,以满足特定的设计需求。我们将主要关注以下几个方面: ...
综上所述,创建一个如"RollWeekView"这样的自定义日期选择控件涉及到Android自定义视图、动画、触摸事件处理等多个技术点。通过巧妙地组合这些技术,我们可以构建出一个既实用又美观的UI组件,提升应用的整体体验。...
【Android 滚动选择日期控件:DateSlider】是一个为安卓应用开发者设计的独特组件,它提供了一种优雅且直观的方式来让用户选择日期。这个控件不仅具备美观的界面,而且交互方式新颖,用户可以通过触屏滚动来选取所需...
### Android中常见控件参考手册知识点详述 #### TextView 文本框 - **类结构**:`TextView`是`View`的子类,用于显示文本信息。它支持丰富的文本格式和样式,包括字体大小、颜色、对齐方式等。 - **方法**:`...
2. **组合功能**:将日期和时间选择功能整合到一个控件中,使得用户能一次性完成日期和时间的设定,简化操作流程。 3. **可定制性**:开发者可以根据项目需求,定制控件的颜色、字体、动画效果等,使其更好地融入...
本教程将介绍如何在Android中创建一个简单的日期选择控件,适用于初学者快速上手。 首先,我们需要引入Android的日期选择器。在Android SDK中,系统提供了一个叫做`DatePicker`的控件,它允许用户通过日、月、年来...