- 浏览: 5819816 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
本人利用WheelView写的一个DatePickerDialog
(还有一个TimePickerDialog,本人忘了在写在哪个项目里了,等找到了也贴上来)
先看图,有个直观的了解
DatePickerDialog代码:
DatePickerDialog的布局文件:
style:
使用:
WheelView类见附件,直接加入到你的工程中即可
安卓选择器类库,包括日期时间选择器等:AndroidPicker
http://www.open-open.com/lib/view/open1445774842960.html
(还有一个TimePickerDialog,本人忘了在写在哪个项目里了,等找到了也贴上来)
先看图,有个直观的了解
DatePickerDialog代码:
import java.util.Calendar; import com.widget.wheel.NumericWheelAdapter; import com.widget.wheel.OnWheelScrollListener; import com.widget.wheel.WheelView; import com.yirui.youbao.app.R; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.Button; /** * * @author pythoner * */ public class DatePickerDialog extends Dialog { private Button btn_left, btn_right; private WheelView year, month, day; private String date;//初始化显示的日期,默认为当日 public DatePickerDialog(Context context, String date) { // super(context); this(context, R.style.Theme_Dialog_NoTitle, date); // TODO Auto-generated constructor stub } public DatePickerDialog(Context context, int theme, String date) { super(context, theme); // TODO Auto-generated constructor stub this.date = date; init(); } private void init() { this.setCanceledOnTouchOutside(true); this.setCancelable(true); } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.dialog_date_picker); initViews(); initValues(); } private void initViews() { btn_left = (Button) findViewById(R.id.btn_left); btn_left.setOnClickListener(clickListener); btn_right = (Button) findViewById(R.id.btn_right); btn_right.setOnClickListener(clickListener); String icurYear, icurMonth, icurDay; Calendar c = Calendar.getInstance(); int curYear = c.get(Calendar.YEAR); if (date == null || date.length() < 10) {// 格式不正确 int curMonth = c.get(Calendar.MONTH); int curDay = c.get(Calendar.DAY_OF_MONTH); icurYear = String.valueOf(curYear); icurMonth = String.valueOf(curMonth + 1); icurDay = String.valueOf(curDay); } else {// 年月日 icurYear = date.substring(0, 4); icurMonth = date.substring(5, 7); icurDay = date.substring(8, 10); } year = (WheelView) findViewById(R.id.year); year.setAdapter(new NumericWheelAdapter(curYear - 2, curYear)); // year.setLabel("年"); year.setCurrentItem(Integer.parseInt(icurYear) - Integer.parseInt(year.getAdapter().getItem(0))); month = (WheelView) findViewById(R.id.month); month.setAdapter(new NumericWheelAdapter(1, 12));// "%02d" // month.setLabel("月"); month.setCyclic(true); month.setCurrentItem(Integer.parseInt(icurMonth) - 1); int daysOfMounth = getDaysOfMounth(); day = (WheelView) findViewById(R.id.day); day.setAdapter(new NumericWheelAdapter(1, daysOfMounth)); // day.setLabel("日"); day.setCyclic(true); day.setCurrentItem(Integer.parseInt(icurDay) - 1); OnWheelScrollListener scrollListener = new OnWheelScrollListener() { public void onScrollingStarted(WheelView wheel) { } public void onScrollingFinished(WheelView wheel) { int daysOfMounth = getDaysOfMounth(); day.setAdapter(new NumericWheelAdapter(1, daysOfMounth)); } }; year.addScrollingListener(scrollListener); month.addScrollingListener(scrollListener); // day.addScrollingListener(scrollListener); } private int getDaysOfMounth() { int mMonth = Integer.parseInt(month.getAdapter().getItem(month.getCurrentItem())); switch (mMonth) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: int mYear = Integer.parseInt(year.getAdapter().getItem(year.getCurrentItem())); if (mYear % 4 == 0 && mYear % 100 != 0 || mYear % 400 == 0) { return 29; } else { return 28; } } return -1; } private void initValues() { } View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btn_left: dismiss(); break; case R.id.btn_right: String mYear = year.getAdapter().getItem(year.getCurrentItem()); String mMonth = month.getAdapter().getItem(month.getCurrentItem()); String mDay = day.getAdapter().getItem(day.getCurrentItem()); if (mDay == null || mDay.length() == 0) { mDay = "1"; } if (Integer.parseInt(mMonth) < 10) { mMonth = "0" + mMonth; } if (Integer.parseInt(mDay) < 10) { mDay = "0" + mDay; } if (onOKClickListener != null) { onOKClickListener.onOKClick(mYear, mMonth, mDay); } dismiss(); break; default: break; } } }; private OnOKClickListener onOKClickListener; public interface OnOKClickListener { public void onOKClick(String year, String month, String date); } public void setOnOKClickListener(OnOKClickListener onOKClickListener) { this.onOKClickListener = onOKClickListener; } }
DatePickerDialog的布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="250dp" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:background="@drawable/bg_picker_dialog" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:padding="8dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="1" android:gravity="center_horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:scaleType="fitCenter" /> <com.widget.wheel.WheelView android:id="@+id/year" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginBottom="10dip" android:layout_marginTop="10dip" android:layout_weight="1" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:scaleType="fitCenter" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="1" android:gravity="center_horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:scaleType="fitCenter" /> <com.widget.wheel.WheelView android:id="@+id/month" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginBottom="8dip" android:layout_marginTop="8dip" android:layout_weight="1" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:scaleType="fitCenter" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="1" android:gravity="center_horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:scaleType="fitCenter" /> <com.widget.wheel.WheelView android:id="@+id/day" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginBottom="8dip" android:layout_marginTop="8dip" android:layout_weight="1" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:scaleType="fitCenter" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="@drawable/line_top_with_blue" > <Button android:id="@+id/btn_left" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:paddingBottom="8dip" android:paddingTop="8dip" android:text="@string/cancel" android:textColor="@android:color/black" android:textSize="@dimen/font_big" android:background="@drawable/bg_btn_trans_blue_with_no_corner" /> <View android:layout_width="@dimen/line_width" android:layout_height="match_parent" android:background="@color/primary" /> <Button android:id="@+id/btn_right" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:paddingBottom="8dip" android:paddingTop="8dip" android:text="@string/confirm" android:textColor="@android:color/black" android:textSize="@dimen/font_big" android:background="@drawable/bg_btn_trans_blue_with_no_corner" /> </LinearLayout> </LinearLayout>
style:
<style name="Theme_Dialog_NoTitle" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowBackground">@android:color/transparent</item> </style>
使用:
dialog = new DatePickerDialog(context, R.style.Theme_Dialog, btn_startDate.getText().toString().trim()); dialog.setOnOKClickListener(new DatePickerDialog.OnOKClickListener() { @Override public void onOKClick(String year, String month, String date) { // TODO Auto-generated method stub //dosomething //btn_startDate.setText(year + "-" + month + "-" + date); } }); dialog.show();
WheelView类见附件,直接加入到你的工程中即可
安卓选择器类库,包括日期时间选择器等:AndroidPicker
http://www.open-open.com/lib/view/open1445774842960.html
发表评论
-
NestedScrollView滚动到顶部固定子View悬停挂靠粘在顶端
2018-10-31 20:45 6993网上有一个StickyScrollView,称之为粘性Scro ... -
自定义Behavior实现AppBarLayout越界弹性效果
2017-03-31 09:33 10369一、继承AppBarLayout.Beha ... -
Android - 一种相似图片搜索算法的实现
2017-03-31 09:33 2622算法 缩小尺寸。 将图片缩小到8x8的尺寸,总共64个 ... -
使用SpringAnimation实现带下拉弹簧动画的 ScrollView
2017-03-30 11:30 2848在刚推出的 Support Library 25.3.0 里面 ... -
Android为应用添加角标(Badge)
2017-03-30 11:21 61751.需求简介 角标是什么意思呢? 看下图即可明了: 可 ... -
Android端与笔记本利用局域网进行FTP通信
2017-03-23 10:17 978先看图 打开前: 打开后: Activity类 ... -
PorterDuffColorFilter 在项目中的基本使用
2017-03-03 10:58 1354有时候标题栏会浮在内容之上,而内容会有颜色的变化,这时候就要求 ... -
ColorAnimationView 实现了滑动Viewpager 时背景色动态变化的过渡效果
2017-02-24 09:41 2220用法在注释中: import android.anima ... -
迷你轻量级全方向完美滑动处理侧滑控件SlideLayout
2017-01-16 16:53 2594纯手工超级迷你轻量级全方向完美滑动处理侧滑控件(比官方 sup ... -
Effect
2017-01-05 09:57 0https://github.com/JetradarMobi ... -
动态主题库Colorful,容易地改变App的配色方案
2016-12-27 14:49 2565Colorful是一个动态主题库,允许您很容易地改变App的配 ... -
对视图的对角线切割DiagonalView
2016-12-27 14:23 1118提供对视图的对角线切割,具有很好的用户定制 基本用法 ... -
仿淘宝京东拖拽商品详情页上下滚动黏滞效果
2016-12-26 16:53 3494比较常用的效果,有现成的,如此甚好!:) import ... -
让任意view具有滑动效果的SlideUp
2016-12-26 09:26 1707基本的类,只有一个: import android.a ... -
AdvancedWebView
2016-12-21 09:44 16https://github.com/delight-im/A ... -
可设置圆角背景边框的按钮, 通过调节色彩明度自动计算按下(pressed)状态颜色
2016-11-02 22:13 1920可设置圆角背景边框的的按钮, 通过调节色彩明度自动计算按下(p ... -
网络请求库相关
2016-10-09 09:35 62https://github.com/amitshekhari ... -
ASimpleCache一个简单的缓存框架
2015-10-26 22:53 2178ASimpleCache 是一个为android制定的 轻量级 ... -
使用ViewDragHelper实现的DragLayout开门效果
2015-10-23 10:55 3415先看一下图,有个直观的了解,向下拖动handle就“开门了”: ... -
保证图片长宽比的同时拉伸图片ImageView
2015-10-16 15:40 3733按比例放大图片,不拉伸失真 import android. ...
相关推荐
`DatePickerDialog`是Android SDK提供的一种标准对话框组件,它基于`AlertDialog`构建,内含一个`DatePicker`,用户可以通过滚动年份、月份和日期来选择一个特定的日期。使用`DatePickerDialog`通常涉及以下步骤: ...
2. **使用第三方库**:有许多优秀的开源库提供了自定义时间选择器的解决方案,如WheelView、android-times-square等。它们通常提供了丰富的定制选项和良好的性能,可以快速集成到项目中。 3. **基于现有控件改造**...
这个开源项目基于`wheelview`库,提供了一个自定义的时间地址选择对话框,通过优化显示效果,提升了用户体验。 首先,我们要理解`wheelview`是什么。`WheelView`是Android平台上的一个可滚动的选择器控件,类似于...
这些对话框是基于Android系统的Material Design风格,提供了一种标准的用户交互方式。使用它们非常简单,只需要创建实例并设置回调监听器: ```java DatePickerDialog datePicker = new DatePickerDialog(this, new...
自定义控件通常基于`WheelView`或`HorizontalScrollView`,通过布局文件和代码配合,实现滚动条的显示和交互。 `WheelView`是一种可滚动的选择器,可以显示一系列连续的数据项,非常适合用来构建日期和时间选择器。...
可以通过自定义布局和使用轮盘控件(WheelView)来实现更个性化的选择器。此外,第三方库如`android-timepicker-dialog`和`android-date-time-picker`提供了更多的定制选项和更好的兼容性。 4. **日期和时间的组合*...
对于自定义选择,代码展示了`DataPickerDialog`的使用,同样基于Builder模式构建。开发者可以传递一个字符串列表`List<String>`到`setData()`方法,然后在`OnDataSelectedListener`回调中处理用户的选中操作。 在`...
你还可以通过第三方库,如`WheelView`或`MaterialDateTimePicker`,来实现更复杂的日期和时间选择功能。 总结来说,Android的`DatePickerDialog`是一个方便的组件,用于在对话框中让用户选择日期。开发者可以通过...
本项目是一个基于Eclipse的工程文件,主要目标是集成畅言开放平台的评论功能,并且实现一个类似iOS风格的单行日期选择器。这样的设计可以使应用在保持功能完整性的同时,提供更接近iOS用户体验的界面,增加用户对...
1. **滚轮视图的实现**:滚轮视图(WheelView)通常基于Android的`ScrollView`或`Gallery`组件进行扩展,通过监听滑动事件来实现滚动效果。开发者可能会使用`onScrollChanged()`方法来追踪滚动状态,并更新显示内容...