转载:http://blog.csdn.net/sun_star1chen/article/details/16330459

NumberPicker是Android3.0之后引入的一个控件

NumberPicker 是用于选择一组预定义好数字的控件。比如时间hour的选择只有0—23有效,则可以通过setMinValue和setMaxValue设定。

使用该控件时需注意他的两个listener和一个formatter:一个listener用于监听当前value的变化;一个listener用于监听该控件的scroll状态;formatter用于格式化显示该控件中的value。下面逐一介绍这几个接口:

1、NumberPicker.OnValueChangeListener :其函数public void onValueChange(NumberPicker picker, int oldVal, int newVal) ;oldVal前一个选中的值,newValue当前选中的值。

2、NumberPicker.OnScrollListener:其内部有三种scroll状态SCROLL_STATE_FLING 、 SCROLL_STATE_IDLE 、 SCROLL_STATE_TOUCH_SCROLL。

SCROLL_STATE_TOUCH_SCROLL:用户按下去然后滑动。

SCROLL_STATE_FLING: 相当于是SCROLL_STATE_TOUCH_SCROLL的后续滑动操作。

SCROLL_STATE_IDLE: NumberPicker不在滚动。

3、NumberPicker.Formatter: 格式化显示数字,例如0—23格式化为00 — 23 。具体的格式在format函数中规定,如下代码:

[java] view plaincopy
  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. }

value值在0—23之间,小于10的数在前面加上“0”。

接下来就是一步一步完成上述功能:

1、创建布局文件widget_number_picker_layout.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent" >
  5. <NumberPicker
  6. android:id="@+id/show_num_picker"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:layout_alignParentLeft="true"
  10. android:layout_alignParentTop="true"
  11. android:layout_marginLeft="71dp"
  12. android:layout_marginTop="141dp" />
  13. </RelativeLayout>

2、创建activity——WidgetNumPickerActivity

[java] view plaincopy
  1. package com.xy.zt.selfdefinewieget;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. import android.widget.NumberPicker;
  6. import android.widget.NumberPicker.Formatter;
  7. import android.widget.NumberPicker.OnScrollListener;
  8. import android.widget.NumberPicker.OnValueChangeListener;
  9. import android.widget.Toast;
  10. public class WidgetNumPickerActivity extends Activity implements
  11. OnValueChangeListener, Formatter, OnScrollListener {
  12. private NumberPicker mNumberPicker;
  13. @Override
  14. public void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.widget_number_picker_layout);
  17. init();
  18. }
  19. private void init() {
  20. mNumberPicker = (NumberPicker) findViewById(R.id.show_num_picker);
  21. mNumberPicker.setFormatter(this);
  22. mNumberPicker.setOnValueChangedListener(this);
  23. mNumberPicker.setOnScrollListener(this);
  24. mNumberPicker.setMaxValue(23);
  25. mNumberPicker.setMinValue(0);
  26. mNumberPicker.setValue(10);
  27. }
  28. public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
  29. Log.i("tag", "oldValue:" + oldVal + "   ; newValue: " + newVal);
  30. Toast.makeText(
  31. this,
  32. "number changed --> oldValue: " + oldVal + " ; newValue: "
  33. + newVal, Toast.LENGTH_SHORT).show();
  34. }
  35. public String format(int value) {
  36. String tmpStr = String.valueOf(value);
  37. if (value < 10) {
  38. tmpStr = "0" + tmpStr;
  39. }
  40. return tmpStr;
  41. }
  42. public void onScrollStateChange(NumberPicker view, int scrollState) {
  43. switch (scrollState) {
  44. case OnScrollListener.SCROLL_STATE_FLING:
  45. Toast.makeText(this, "scroll state fling", Toast.LENGTH_LONG)
  46. .show();
  47. break;
  48. case OnScrollListener.SCROLL_STATE_IDLE:
  49. Toast.makeText(this, "scroll state idle", Toast.LENGTH_LONG).show();
  50. break;
  51. case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
  52. Toast.makeText(this, "scroll state touch scroll", Toast.LENGTH_LONG)
  53. .show();
  54. break;
  55. }
  56. }
  57. }
[java] view plaincopy

其中一个状态的效果图如下:

3、下面代码完善整个工程,如下有不清楚的内容参见一步一步学android控件(之一) —— 开始篇

在ViewData.java中添加如下内容:

[java] view plaincopy
  1. public static final int NUMBER_PICKER_ID = TIME_PICKER_ID + 1;
  2. public static final String NUMBER_PICKER_NAME = "NumberPicker";
  3. private static final ViewData mNumPicker = new ViewData(NUMBER_PICKER_NAME,
  4. NUMBER_PICKER_ID);
  5. View_Datas.add(mNumPicker);

在WidgetsAdapter的handleItemClick函数中添加如下内容:

[java] view plaincopy
  1. case ViewData.NUMBER_PICKER_ID:
  2. intent.setClass(mContext, WidgetNumPickerActivity.class);
  3. mContext.startActivity(intent);
  4. break;

NumberPicker相关推荐

  1. 数值选择器(NumberPicker)的功能与用法

     数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值.使用该组件常用如下三个方法. setMinValue(int minVal):设置该组件支持的最小值. set ...

  2. 自己的数字选择控件NumberPicker

    Android3.0增加了一个NumberPicker类,可用于数字的获取.但是目前我们的应用一般都至少要兼容到2.1,所以要用NumberPicker就很纠结了. 我在写的一个应用要用到金钱的输入, ...

  3. Android日期对话框NumberPicker的用法教程

    2019独角兽企业重金招聘Python工程师标准>>> NumberPicker是Android3.0之后引入的一个控件,NumberPicker 是用于选择一组预定义好数字的控件. ...

  4. android numberpicker,NumberPicker实现滑动选择

    NumberPicker使用,实现滑动选择(可实现省市联动) 最近使用了一个控件NumberPicker,该控件可以实现省市区联动以及其他各种滑动选择,这里只是简单的记录下如何使用. 效果图: 先是x ...

  5. android numberpicker 自定义,Android的自定义数字Picker控件-NumberPicker使用方法

    android-numberpicker是github的一个项目,提供了安卓中的自定义数字拾取控件,它的效果如图所示: 应用该控件也非常简单,使用如下几步即可: 1.从github上下载该控件,地址为 ...

  6. Android自己定义NumberPicker

    在项目中使用要使用滑轮来选择时间,而android系统自带的NumberPicker样式和需求不一样,而且颜色默认的是蓝色的,字体只能为黑色,上下只能显示1个,效果如下图: 这样子满足不了我们的需求, ...

  7. android用出生日期显示星座代码,安卓 NumberPicker使用说明以及实例:星座判断

    NumberPicker的用法 说明:NumberPicker:数字选择器,是3.0以后引入的组件,可以通过其做些数字的滑动选择,也可以用其做一些定时器的应用,该篇是平时学习中的一些心得和小结,以及写 ...

  8. android 动态向下箭头,向上/向下箭头添加到android numberpicker

    我做了一个数字选择对话框.它看起来像左边的图像,但没有上/下箭头: 我该如何添加它们? 这是我的代码: public class NumberPickerFragment extends Dialog ...

  9. 安卓NumberPicker数字选择器用法

    前言 数字选择器NumberPicker是Android3.0之后出的一个控件,所以如果要兼容3.0之前的版本就需要用到GitHub上的开源项目,下载地址是https://github.com/Sim ...

最新文章

  1. 成语json_推荐一份中文数据,来试试汉字、词语、成语、歇后语在线检索
  2. CF232C Doe Graphs
  3. mysql 用户授权_mysql添加、删除用户和授权用户
  4. 证明创建runnable实例和普通类时间一样长
  5. 与context的关系_Android-Context
  6. 基于keepalived实现多种模式的高可用集群网站架构
  7. [ETL] Flume 理论与demo(Taildir Source Hdfs Sink)
  8. linux tcp文件分包_在Linux下基于TCP协议的文件传输程序.
  9. .net流行面试试题(基础但重要)
  10. django中collectstatic的使用
  11. zoj 3284 Matrix Processing(二维树状数组)
  12. 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
  13. Circumventing Group Policy Settings
  14. mame 最新版本以及fba 编译
  15. Python 数据处理 | 详解缩尾处理(winsorize)和代码实践
  16. 人脸对齐(一)--定义及作用
  17. LabVIEW编程基础:条件结构编程
  18. 4D 语义分割——TemporalLidarSeg
  19. python允许无止境的循环_python基础课程 第6章 循环(无尽的未来)
  20. 【HTML——粒子 特效】

热门文章

  1. Visual Studio2022快速生成函数说明文档
  2. 使用Xcode的Instruments检测内存泄漏
  3. Ubuntu16.04(64bit)兼容32bit程序
  4. 调戏 ChatGPT
  5. H5页面自适应各种手机端屏幕分辨率的大小
  6. 视频监控系统中H.265、SVAC、GB/T28181、ONVIF、PSIA有什么区别?
  7. Python采集常用:谷歌浏览器驱动——Chromedriver 插件安装教程
  8. iphone横竖屏切换,旋转屏幕
  9. 第六章 更多监督训练
  10. 大数据相关职位的知识储备与系统学习路线规划以及所需时间