前言

Android开发有不少情况下会用到Picker,例如选择 地址、日期、时间。

原生Picker和仿iOS的Picker都是上下或左右滑动到固定区域来选择选项:

显示数量少,如果当前选项距离需要的选项比较远就得滑很多次;

滑动不好控制,一不小心就滑过了需要往相反方向慢慢滑回来,很烦人。

ZBLibrary中的GridPicker每页显示多行多列,大大增加了显示数量;将滑动选择改为点击选择,大大提高了操作精度。

一、原生Picker

问题:

1.地址和时间选择器显示的选项数量少,还只能挨个切换,效率低下

2.日期选择器选择年份需要点击最上方年份文字,手指不容易够到,显示的选项也较少;

   月份选择要点击左右箭头或左右滑动,只能挨个切换,效率低下

二、仿iOS的Picker

问题:

1.显示的选项数量少

2.选项只能挨个切换。

3.需要上下滑动到指定方框,不好控制。 

三、ZBLibrary GridPicker

以下Gif图看起来比较卡,实际上手机运行得很流畅

所有操作都在下半屏,操作轻松;

每页显示多行多列,大大增加了显示数量;

将滑动选择改为点击选择,大大提高了操作精度。

ZBLibrary GridPicker完美地解决了以上所有问题!

如何使用ZBLibrary GridPicker

1.下载、导入、依赖ZBLibrary

点击右边链接查看 http://my.oschina.net/u/2437072/blog/665241

2.打开对应Activity并传值

以日期选择器DatePickerWindow为例:

可以这样打开并传值

toActivity(DatePickerWindow.createIntent(context, new int[]{1971, 0, 1}
, TimeUtil.getDateDetail(System.currentTimeMillis())), 1000, false);

toActivity是ZBLibrary中BaseActivity里的方法,可以换成startActivityForResult

3.onActivityResult中接收返回结果

    @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) {
return;
} switch (requestCode) {
case 1000:
if (data != null) {
ArrayList<Integer> list = data.getIntegerArrayListExtra(DatePickerWindow.RESULT_DATE_DETAIL_LIST);
if (list != null && list.size() >= 3) { showShortToast("选择的日期为" + list.get(0) + "-" + (list.get(1) + 1) + "-" + list.get(2));
}
}
break;
default:
break;
}
}

好了。

如果你连2-3这几步都懒得做,把ZBLibrary里的DemoMainActivity.java 复制>粘贴>改名>改代码 就可以啦!

事实上ZBLibrary中的地址、日期、时间选择器都是用GridPickerView来控制显示和操作的,

你也可以使用GridPickerView实现其它用途的选择器。

ZBLibrary-Android快速开发框架

下载地址(欢迎Star,欢迎Fork)

https://github.com/TommyLemon/Android-ZBLibrary

下载试用

ZBLibraryDemoApp.apk

不一样的Android选择器,简单方便,地址日期时间都好用!的更多相关文章

  1. Android日期时间选择器DatePicker、TimePicker日期时间改变事件响应(Android学习笔记)

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  2. Android中实现日期时间选择器(DatePicker和TimePicker)

    利用Android应用框架提供的DatePicker(日期选择器)和TimePicker(时间选择器),实现日期时间选择器. Dialog的Content布局文件(date_time_dialog.x ...

  3. 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载

    19af543b068bdb7f27787c2bc69aba7f Additional Download (32-, 64-bit) Package r10 STL debug info androi ...

  4. Android 实现简单音乐播放器(二)

    在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...

  5. Android 实现简单音乐播放器(一)

    今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习 ...

  6. Android课程---Android Studio简单设置

    Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings-->Appearance-->Theme, ...

  7. Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能 ...

  8. Android实现简单拨号器

    Android实现简单拨号器 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 代码实现 界面布局只有GridLayout和EditText两个控件,全部 ...

  9. 【转】Android Studio简单设置

    原文网址:http://ask.android-studio.org/?/article/14 Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以 ...

随机推荐

  1. Thread 和 Runnable 的区别

    在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口: Thread类是在java.lang包中定义 的.一个类只要继承了Thread类同时覆写了本类中的run ...

  2. SQL-Server使用点滴(一)

    前言 SQL的语法比较简单,学起来相比界面UI控制要简单得多,但是SQL在企业级应用中又是如此的重要,以至于很多开发人员都把重点放在SQL上. SQL并没有面向对象的概念,最复杂的设计也不过是表值函数 ...

  3. php : 基础(6)

    数组 数组基础 含义: 数组就是一系列数据的集合体,他们按设定的顺序排列为一个"链的形状". 注意:php中的数组单元的顺序,跟下标无关! 数组定义(赋值): $arr1 = ar ...

  4. MAC 设置环境变量path的几种方法

    mac 一般使用bash作为默认shell Mac系统的环境变量,加载顺序为:/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.prof ...

  5. application、viewstate、纯HTML提交方式

    Application - 全局公共变量组 存放位置:服务端 所有的访问用户都是访问的同一个变量 声明周期:永久 用法同session类似 viewstate-病例 因为http的无状态性,需要记录上 ...

  6. springmvc 添加Junit4

    junit 单元测试的好处我就不赘述了,本文旨在介绍自己使用的一个方式: 1.添加依赖 <dependency> <groupId>junit</groupId> ...

  7. PHP 文件的操作

    操作文件的步骤: 1.打开文件2.做操作PS!!!3.关闭文件 打开 操作

  8. excle表格生成网页

    用Dreamweaver可以方便生成和excle表格一样的代码. 复制excle,粘贴

  9. Java之数组了解

    一.什么是数组 数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据, 比如可以定义 int 型的数组 scores 存储 4 名学生的成绩: int[] scores={76,8 ...

  10. .net中excel遇到的一些问题

    Excel.Application app; 错误 1 未能找到类型或命名空间名称“Excel”(是否缺少 using 指令或程序集引用?) 解决方法: 添加引用 Interop.Excel.dll ...