数字选择器NumberPicker是Android3.0之后引入的一个控件,比较常用,比如说手机常用的闹钟,可以选择小时和分钟,如果你需要兼容3.0之前版本,GitHub上有开源的项目,具体的下载地址https://github.com/SimonVT/android-numberpicker。本人就没有使用开源的项目,就简单的使用了NumberPicker显示一下效果,开始正题吧:

基础维护

开发东西先看下效果吧:

NumberPicker和TextView显示一下时间,线性布局,看下布局文件吧:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:orientation="vertical"
  6. tools:context="com.example.googlenumberpicker.MainActivity" >
  7.  
  8. <LinearLayout
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:layout_marginTop="30dp"
  12. android:layout_marginLeft="50dp"
  13. android:layout_gravity="center_horizontal" >
  14.  
  15. <NumberPicker
  16. android:id="@+id/hourpicker"
  17. android:layout_width="40dp"
  18. android:layout_height="wrap_content" />
  19.  
  20. <TextView
  21. android:layout_width="wrap_content"
  22. android:layout_height="wrap_content"
  23. android:layout_gravity="center_vertical"
  24. android:text="时" />
  25.  
  26. <NumberPicker
  27. android:id="@+id/minuteicker"
  28. android:layout_width="40dp"
  29. android:layout_height="wrap_content" />
  30.  
  31. <TextView
  32. android:layout_width="wrap_content"
  33. android:layout_height="wrap_content"
  34. android:layout_gravity="center_vertical"
  35. android:text="分" />
  36. </LinearLayout>
  37.  
  38. </LinearLayout>

 Demo实现

数字选择是可以滑动,所以需要定义一个OnValueChangeListener事件,OnScrollListener滑动事件,Formatter事件:

Formatter事件:

  1. public String format(int value) {
  2. String tmpStr = String.valueOf(value);
  3. if (value < 10) {
  4. tmpStr = "0" + tmpStr;
  5. }
  6. return tmpStr;
  7. }

OnValueChangeListener事件:

  1. public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
  2. Toast.makeText(
  3. this,
  4. "原来的值 " + oldVal + "--新值: "
  5. + newVal, Toast.LENGTH_SHORT).show();
  6. }

OnScrollListener滑动事件,滑动事件有三个状态:

SCROLL_STATE_FLING:手离开之后还在滑动

SCROLL_STATE_IDLE:不滑动

SCROLL_STATE_TOUCH_SCROLL:滑动中

  1. public void onScrollStateChange(NumberPicker view, int scrollState) {
  2. switch (scrollState) {
  3. case OnScrollListener.SCROLL_STATE_FLING:
  4. Toast.makeText(this, "后续滑动(飞呀飞,根本停下来)", Toast.LENGTH_LONG)
  5. .show();
  6. break;
  7. case OnScrollListener.SCROLL_STATE_IDLE:
  8. Toast.makeText(this, "不滑动", Toast.LENGTH_LONG).show();
  9. break;
  10. case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
  11. Toast.makeText(this, "滑动中", Toast.LENGTH_LONG)
  12. .show();
  13. break;
  14. }
  15. }

 初始化:

  1. hourPicker=(NumberPicker) findViewById(R.id.hourpicker);
  2. minutePicker=(NumberPicker) findViewById(R.id.minuteicker);
  3. init();

 init方法中,设置数字的最大值,最小值,以及滑动事件:

  1. private void init() {
  2. hourPicker.setFormatter(this);
  3. hourPicker.setOnValueChangedListener(this);
  4. hourPicker.setOnScrollListener(this);
  5. hourPicker.setMaxValue(24);
  6. hourPicker.setMinValue(0);
  7. hourPicker.setValue(9);
  8.  
  9. minutePicker.setFormatter(this);
  10. minutePicker.setOnValueChangedListener(this);
  11. minutePicker.setOnScrollListener(this);
  12. minutePicker.setMaxValue(60);
  13. minutePicker.setMinValue(0);
  14. minutePicker.setValue(49);
  15. }

  还差一步,Activity需要继承一下OnValueChangeListener,OnScrollListener,Formatter:

  1. public class MainActivity extends Activity implements OnValueChangeListener,OnScrollListener,Formatter{...}

 最后说一点就是NumberPicker也是可以显示文字的,重新定义一个NumberPicker,加载一下:

  1. valuepicker = (NumberPicker) findViewById(R.id.valuepicker);
  2. String[] city = {"立水桥","霍营","回龙观","龙泽","西二旗","上地"};
  3. valuepicker.setDisplayedValues(city);
  4. valuepicker.setMinValue(0);
  5. valuepicker.setMaxValue(city.length - 1);
  6. valuepicker.setValue(4);

  最后显示的效果:

Android数字选择器-NumberPicker的更多相关文章

  1. Android零基础入门第58节:数值选择器NumberPicker

    原文:Android零基础入门第58节:数值选择器NumberPicker 上一期学习了日期选择器DatePicker和时间选择器TimePicker,是不是感觉非常简单,本期继续来学习数值选择器Nu ...

  2. Android日期对话框NumberPicker的使用方法教程

    NumberPicker是Android3.0之后引入的一个控件.NumberPicker 是用于选择一组提前定义好数字的控件.比方时间hour的选择仅仅有0-23有效,则能够通过setMinValu ...

  3. Android文件选择器的实例分享

    本文给大家讲解下Android文件选择器的使用.实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDialog控件. 此实例的实现过程很简单,这样可以让大家快速的熟悉 ...

  4. 【转】Android数字证书

    Android数字证书的作用是非常重要的.Android操作系统每一个应用程序的安装都需要经过这一数字证书的签名. Android手机操作系统作为一款比较流行的开源系统在手机领域占据着举足轻重的地位. ...

  5. Android的数字选择器NumberPicker-android学习之旅(三十七)

    我想说的话 今天晚上我依然在图书馆写博客,其实此刻我的没心激动而忐忑,因为明天就是足球赛的决赛,我作为主力球员压力很大,因对对方很强大,但是那又怎么样.so what...我不会停止写博客的 Numb ...

  6. 【原创】Android selector选择器无效或无法正常显示的一点研究

    想将LinearLayout作为一个按钮,加上一个动态背景,按下的时候,背景变色,这个理所当然应该使用selector背景选择器来做: <LinearLayout android:id=&quo ...

  7. android背景选择器selector用法汇总

    一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片 <?xml version="1.0" encoding="utf-8&quo ...

  8. Android selector选择器的使用

    通常按钮在点击前和后有两种状态,比如点击前为蓝色,点击后为灰色,且不再响应点击事件. 如果不使用selector选择器,点击后,就需要在程序中进行以下的类似操作 button1.setBackgrou ...

  9. Android图片选择器--仿QQ

    当做一款APP,需要选择本地图片时,首先考虑的无疑是系统相册,但是Android手机五花八门,再者手机像素的提升,大图无法返回等异常因数,导致适配机型比较困难,微信.QQ都相继的在自己的APP里集成了 ...

随机推荐

  1. qt study2

  2. 远程连接mysql root账号报错:2003-can't connect to MYSQL serve

    1.远程连接Linux系统,登录数据库:mysql -uroot -p(密码) 2.修改root账号的设置: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDE ...

  3. C++雾中风景7:闭包

    本来说好要聊一聊命名空间的,因为最近在看C++lambda表达式的内容,所以借这个机会我们来好好聊一聊C++的闭包. 1.什么是闭包? 闭包(closure)是函数式编程的重要的语法结构. 闭包的概念 ...

  4. poi类包对比

  5. WebApi-JSON序列化循环引用

    Overview 最近被序列化,循环引用的问题,让我浑身酸爽.遇到这种异常是在搭建WebApi的时候,当我返回Linq实例类集合的时候出现的. 下定决心要解决这个问题.循环引用引起的原因是: 比如说: ...

  6. MSSQL 基础知识与语句笔记

    建库 CREATE DATABASE 数据库名 ON[PRIMARY] --默认属于PRIMARY主文件组,可省略 ( NAME='', --主数据文件的逻辑名 名称 FILEAME='', --主数 ...

  7. 【WIN10】程序內文件讀取與保存

    DEMO下載:http://yunpan.cn/cFHIZNmAy4ZtH  访问密码 cf79 1.讀取與保存文件 Assets一般被認為是保存用戶文件數據的地方.同時,微軟還支持用戶自己創建文件夾 ...

  8. BZOJ 3172 [Tjoi2013]单词 AC自动机Fail树

    题目链接:[http://www.lydsy.com/JudgeOnline/problem.php?id=3172] 题意:给出一个文章的所有单词,然后找出每个单词在文章中出现的次数,单词用标点符号 ...

  9. bzoj2660: [Beijing wc2012]最多的方案

    题目链接 bzoj2660: [Beijing wc2012]最多的方案 题解 对于一个数的斐波那契数列分解,他的最少项分解是唯一的 我们在拆分成的相临两项之间分解后者,这样形成的方案是最优且不重的 ...

  10. 1265. [NOIP2012] 同余方程

    1265. [NOIP2012] 同余方程 ★☆   输入文件:mod.in   输出文件:mod.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] 求关于 x 的同余 ...