不一样的Android选择器,简单方便,地址日期时间都好用!
前言
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
下载试用
不一样的Android选择器,简单方便,地址日期时间都好用!的更多相关文章
- Android日期时间选择器DatePicker、TimePicker日期时间改变事件响应(Android学习笔记)
activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...
- Android中实现日期时间选择器(DatePicker和TimePicker)
利用Android应用框架提供的DatePicker(日期选择器)和TimePicker(时间选择器),实现日期时间选择器. Dialog的Content布局文件(date_time_dialog.x ...
- 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
19af543b068bdb7f27787c2bc69aba7f Additional Download (32-, 64-bit) Package r10 STL debug info androi ...
- Android 实现简单音乐播放器(二)
在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...
- Android 实现简单音乐播放器(一)
今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习 ...
- Android课程---Android Studio简单设置
Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings-->Appearance-->Theme, ...
- Android实现简单音乐播放器(MediaPlayer)
Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能 ...
- Android实现简单拨号器
Android实现简单拨号器 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 代码实现 界面布局只有GridLayout和EditText两个控件,全部 ...
- 【转】Android Studio简单设置
原文网址:http://ask.android-studio.org/?/article/14 Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以 ...
随机推荐
- tzwhere模块 根据经纬度判断时区
先说一说这个问题的误区: 1: 根据地理常识,我们知道时区有24个,经度/15=商+余数,此时的商就是是时区,给大组长说了一下,不沾边 又过了几天 2:发现django自带的模块timezone,也叫 ...
- SQL知识整理三:变量、全局变量、视图、事务、异常
变量 1.局部变量的声明(一个@) declare @n int --声明变量关键字为declare 然后@加变量名 后面是变量类型 declare @s varchar(36) 2 ...
- python走起之第十一话
Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...
- mac 安装命令行开发者工具
terminal中执行: xcode-select --install然后点击 “安装”即可 mac命令行工具
- SQL基础--序列
序列是一种数据库对象,用来自动产生一组唯一的序号:序列是一种共享式的对象,多个用户可以共同使用序列中的序号. 序列的创建语法 CREATE SEQUENCE sequencename [INCREME ...
- NSScanner知悉 (转)
http://blog.csdn.net/likendsl/article/details/7974761 NSScanner是一个类,用于在字符串中扫描指定的字符,尤其是把它们翻译/转换为数字和别的 ...
- ssh 登录
一.ssh登录过程 在实际开发中,经常使用ssh进行远程登录.ssh 登录到远程主机的过程包括: 版本号协商 密钥和算法协商 认证 交互 1.1 版本号协商阶段 (1) 服务端打开22端口(也可以为了 ...
- Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享
架构师小组交流会:每期选一个时下最热门的技术话题进行实践经验分享. 第一期主题:容器实践.Docker 作为当前最具颠覆性的开源技术之一,其轻量虚拟化.可移植性是CI/CD,DevOps,微服务的重要 ...
- css划隔横线的两种方法
css划隔横线的两种方法 方法一:用DIV,代码如下:(推荐此方法) <div style="width:800px;height:1px;margin:0px auto;pa ...
- js点击按钮div显示,点击div或者body和按钮,div隐藏
var box = document.getElementById("box"); var btn = document.getElementById("btn" ...