前言

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. tzwhere模块 根据经纬度判断时区

    先说一说这个问题的误区: 1: 根据地理常识,我们知道时区有24个,经度/15=商+余数,此时的商就是是时区,给大组长说了一下,不沾边 又过了几天 2:发现django自带的模块timezone,也叫 ...

  2. SQL知识整理三:变量、全局变量、视图、事务、异常

           变量 1.局部变量的声明(一个@) declare @n int   --声明变量关键字为declare 然后@加变量名 后面是变量类型 declare @s varchar(36) 2 ...

  3. python走起之第十一话

    Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  4. mac 安装命令行开发者工具

    terminal中执行: xcode-select --install然后点击 “安装”即可 mac命令行工具

  5. SQL基础--序列

    序列是一种数据库对象,用来自动产生一组唯一的序号:序列是一种共享式的对象,多个用户可以共同使用序列中的序号. 序列的创建语法 CREATE SEQUENCE sequencename [INCREME ...

  6. NSScanner知悉 (转)

    http://blog.csdn.net/likendsl/article/details/7974761 NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的 ...

  7. ssh 登录

    一.ssh登录过程 在实际开发中,经常使用ssh进行远程登录.ssh 登录到远程主机的过程包括: 版本号协商 密钥和算法协商 认证 交互 1.1 版本号协商阶段 (1) 服务端打开22端口(也可以为了 ...

  8. Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享

    架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. 第一期主题:容器实践.Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化.可移植性是CI/CD,DevOps,微服务的重要 ...

  9. css划隔横线的两种方法

    css划隔横线的两种方法  方法一:用DIV,代码如下:(推荐此方法)    <div style="width:800px;height:1px;margin:0px auto;pa ...

  10. js点击按钮div显示,点击div或者body和按钮,div隐藏

    var box = document.getElementById("box"); var btn = document.getElementById("btn" ...