NumberPicker
转载: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函数中规定,如下代码:
- public String format(int value) {
- String tmpStr = String.valueOf(value);
- if (value < 10) {
- tmpStr = "0" + tmpStr;
- }
- return tmpStr;
- }
value值在0—23之间,小于10的数在前面加上“0”。
接下来就是一步一步完成上述功能:
1、创建布局文件widget_number_picker_layout.xml
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <NumberPicker
- android:id="@+id/show_num_picker"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:layout_marginLeft="71dp"
- android:layout_marginTop="141dp" />
- </RelativeLayout>
2、创建activity——WidgetNumPickerActivity
- package com.xy.zt.selfdefinewieget;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.widget.NumberPicker;
- import android.widget.NumberPicker.Formatter;
- import android.widget.NumberPicker.OnScrollListener;
- import android.widget.NumberPicker.OnValueChangeListener;
- import android.widget.Toast;
- public class WidgetNumPickerActivity extends Activity implements
- OnValueChangeListener, Formatter, OnScrollListener {
- private NumberPicker mNumberPicker;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.widget_number_picker_layout);
- init();
- }
- private void init() {
- mNumberPicker = (NumberPicker) findViewById(R.id.show_num_picker);
- mNumberPicker.setFormatter(this);
- mNumberPicker.setOnValueChangedListener(this);
- mNumberPicker.setOnScrollListener(this);
- mNumberPicker.setMaxValue(23);
- mNumberPicker.setMinValue(0);
- mNumberPicker.setValue(10);
- }
- public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
- Log.i("tag", "oldValue:" + oldVal + " ; newValue: " + newVal);
- Toast.makeText(
- this,
- "number changed --> oldValue: " + oldVal + " ; newValue: "
- + newVal, Toast.LENGTH_SHORT).show();
- }
- public String format(int value) {
- String tmpStr = String.valueOf(value);
- if (value < 10) {
- tmpStr = "0" + tmpStr;
- }
- return tmpStr;
- }
- public void onScrollStateChange(NumberPicker view, int scrollState) {
- switch (scrollState) {
- case OnScrollListener.SCROLL_STATE_FLING:
- Toast.makeText(this, "scroll state fling", Toast.LENGTH_LONG)
- .show();
- break;
- case OnScrollListener.SCROLL_STATE_IDLE:
- Toast.makeText(this, "scroll state idle", Toast.LENGTH_LONG).show();
- break;
- case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
- Toast.makeText(this, "scroll state touch scroll", Toast.LENGTH_LONG)
- .show();
- break;
- }
- }
- }
其中一个状态的效果图如下:
3、下面代码完善整个工程,如下有不清楚的内容参见一步一步学android控件(之一) —— 开始篇
在ViewData.java中添加如下内容:
- public static final int NUMBER_PICKER_ID = TIME_PICKER_ID + 1;
- public static final String NUMBER_PICKER_NAME = "NumberPicker";
- private static final ViewData mNumPicker = new ViewData(NUMBER_PICKER_NAME,
- NUMBER_PICKER_ID);
- View_Datas.add(mNumPicker);
在WidgetsAdapter的handleItemClick函数中添加如下内容:
- case ViewData.NUMBER_PICKER_ID:
- intent.setClass(mContext, WidgetNumPickerActivity.class);
- mContext.startActivity(intent);
- break;
NumberPicker相关推荐
- 数值选择器(NumberPicker)的功能与用法
数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值.使用该组件常用如下三个方法. setMinValue(int minVal):设置该组件支持的最小值. set ...
- 自己的数字选择控件NumberPicker
Android3.0增加了一个NumberPicker类,可用于数字的获取.但是目前我们的应用一般都至少要兼容到2.1,所以要用NumberPicker就很纠结了. 我在写的一个应用要用到金钱的输入, ...
- Android日期对话框NumberPicker的用法教程
2019独角兽企业重金招聘Python工程师标准>>> NumberPicker是Android3.0之后引入的一个控件,NumberPicker 是用于选择一组预定义好数字的控件. ...
- android numberpicker,NumberPicker实现滑动选择
NumberPicker使用,实现滑动选择(可实现省市联动) 最近使用了一个控件NumberPicker,该控件可以实现省市区联动以及其他各种滑动选择,这里只是简单的记录下如何使用. 效果图: 先是x ...
- android numberpicker 自定义,Android的自定义数字Picker控件-NumberPicker使用方法
android-numberpicker是github的一个项目,提供了安卓中的自定义数字拾取控件,它的效果如图所示: 应用该控件也非常简单,使用如下几步即可: 1.从github上下载该控件,地址为 ...
- Android自己定义NumberPicker
在项目中使用要使用滑轮来选择时间,而android系统自带的NumberPicker样式和需求不一样,而且颜色默认的是蓝色的,字体只能为黑色,上下只能显示1个,效果如下图: 这样子满足不了我们的需求, ...
- android用出生日期显示星座代码,安卓 NumberPicker使用说明以及实例:星座判断
NumberPicker的用法 说明:NumberPicker:数字选择器,是3.0以后引入的组件,可以通过其做些数字的滑动选择,也可以用其做一些定时器的应用,该篇是平时学习中的一些心得和小结,以及写 ...
- android 动态向下箭头,向上/向下箭头添加到android numberpicker
我做了一个数字选择对话框.它看起来像左边的图像,但没有上/下箭头: 我该如何添加它们? 这是我的代码: public class NumberPickerFragment extends Dialog ...
- 安卓NumberPicker数字选择器用法
前言 数字选择器NumberPicker是Android3.0之后出的一个控件,所以如果要兼容3.0之前的版本就需要用到GitHub上的开源项目,下载地址是https://github.com/Sim ...
最新文章
- 成语json_推荐一份中文数据,来试试汉字、词语、成语、歇后语在线检索
- CF232C Doe Graphs
- mysql 用户授权_mysql添加、删除用户和授权用户
- 证明创建runnable实例和普通类时间一样长
- 与context的关系_Android-Context
- 基于keepalived实现多种模式的高可用集群网站架构
- [ETL] Flume 理论与demo(Taildir Source Hdfs Sink)
- linux tcp文件分包_在Linux下基于TCP协议的文件传输程序.
- .net流行面试试题(基础但重要)
- django中collectstatic的使用
- zoj 3284 Matrix Processing(二维树状数组)
- 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
- Circumventing Group Policy Settings
- mame 最新版本以及fba 编译
- Python 数据处理 | 详解缩尾处理(winsorize)和代码实践
- 人脸对齐(一)--定义及作用
- LabVIEW编程基础:条件结构编程
- 4D 语义分割——TemporalLidarSeg
- python允许无止境的循环_python基础课程 第6章 循环(无尽的未来)
- 【HTML——粒子 特效】