Android NumberPicker
2016-08-08 22:54
197 查看
NumberPicker是一个滑动数字选择控件,把指定范围内数字排列在垂直方向上下滑动,交互体验与之前讲过的TimePicker,DatePicker类似。
NumberPicker控件主要用到的监听事件有两个分别是:
NumberPicker.OnValueChangeListener ,用于监听数值变化,通过此接口可以得到变化前的值和当前值
NumberPicker.OnScrollListener,用于监听滑动状态变化,其状态有SCROLL_STATE_FLING 、 SCROLL_STATE_IDLE 、 SCROLL_STATE_TOUCH_SCROLL,文章最后最详细解释这些状态的含义。
既然NumberPickersv 使用一组预定义并且有范围的数字,那么就需要设置相应的最小值和最大值,对应以下两个方法
numberPicker.setMinValue(0);//设置最小值为0
numberPicker.setMaxValue(20);//设置最大值为20
下面通过一个例子说明以上概念,效果图如下所示:
主界面XML布局代码:
Activity文件代码:
注意 Activity需要用implements关键字实现以下接口 OnValueChangeListener, Formatter, OnScrollListener ,否则无法进行事件监听,例如本例:
public class NumberPickerActivity extends Activity implements OnValueChangeListener, Formatter, OnScrollListener
覆写完对应方法后需使用setFormatter(this),setOnValueChangedListener(this),setOnScrollListener(this)把相应事件设置到NumberPicker控件上。
本例通过两种方式获取NumberPicker上的值
(1)通过OnValueChangeListener监听事件可以同时获取原值和当前值
(2)在button的click事件中使用 numberPicker.getValue()这个方法获取当前值
NumberPicker主要方法整理如下:
NumberPicker控件主要用到的监听事件有两个分别是:
NumberPicker.OnValueChangeListener ,用于监听数值变化,通过此接口可以得到变化前的值和当前值
NumberPicker.OnScrollListener,用于监听滑动状态变化,其状态有SCROLL_STATE_FLING 、 SCROLL_STATE_IDLE 、 SCROLL_STATE_TOUCH_SCROLL,文章最后最详细解释这些状态的含义。
既然NumberPickersv 使用一组预定义并且有范围的数字,那么就需要设置相应的最小值和最大值,对应以下两个方法
numberPicker.setMinValue(0);//设置最小值为0
numberPicker.setMaxValue(20);//设置最大值为20
下面通过一个例子说明以上概念,效果图如下所示:
主界面XML布局代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <NumberPicker android:id="@+id/numberPicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/numberPicker1" android:layout_centerHorizontal="true" android:text="获取当前值" /> </RelativeLayout>
Activity文件代码:
package com.my.androidtest; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; 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 NumberPickerActivity extends Activity implements OnValueChangeListener, Formatter, OnScrollListener { NumberPicker numberPicker=null; Button button=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_number_picker); numberPicker=(NumberPicker)this.findViewById(R.id.numberPicker1); numberPicker.setFormatter(this); //格式化数字,需重写format方法,详情见下面的代码 numberPicker.setOnValueChangedListener(this); //值变化监听事件 numberPicker.setOnScrollListener(this); //滑动监听事件 numberPicker.setMinValue(0);//最小值 numberPicker.setMaxValue(20);//最大值 numberPicker.setValue(1);//设置初始选定值 button=(Button)this.findViewById(R.id.button1); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { Toast.makeText(NumberPickerActivity.this, "当前值是:"+numberPicker.getValue(), Toast.LENGTH_SHORT).show(); } }); } @Override 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; } } @Override public String format(int value) { String tmpStr = String.valueOf(value); if (value < 10) { tmpStr = "0" + tmpStr; } return tmpStr; } @Override public void onValueChange(NumberPicker picker, int oldVal, int newVal) { Toast.makeText(this, "值发生变化 ,原值: " + oldVal + " , 新值:"+ newVal, Toast.LENGTH_SHORT).show(); } }
注意 Activity需要用implements关键字实现以下接口 OnValueChangeListener, Formatter, OnScrollListener ,否则无法进行事件监听,例如本例:
public class NumberPickerActivity extends Activity implements OnValueChangeListener, Formatter, OnScrollListener
覆写完对应方法后需使用setFormatter(this),setOnValueChangedListener(this),setOnScrollListener(this)把相应事件设置到NumberPicker控件上。
本例通过两种方式获取NumberPicker上的值
(1)通过OnValueChangeListener监听事件可以同时获取原值和当前值
(2)在button的click事件中使用 numberPicker.getValue()这个方法获取当前值
NumberPicker主要方法整理如下:
NumberPicker.setFormatter(Formatter formatter) 格式化NumberPicker内部的数字 实现功能需要覆写format方法,格式public String format(int value),参数value是原数字,返回值是String类型的,详情参考本例代码。 |
NumberPicker.setOnValueChangedListener(OnValueChangeListener onValueChangedListener) 值变化监听事件 需要在内部重写onValueChange方法,格式如下: public void onValueChange(NumberPicker picker, int oldVal, int newVal) 参数 picker 当前控件, oldVal变化之前的值,newVal改变后的新值(当前值) |
NumberPicker.setOnScrollListener(OnScrollListener onScrollListener) 滑动状态变化监听事件,分为3种状态: SCROLL_STATE_TOUCH_SCROLL:用户按下去然后滑动 SCROLL_STATE_FLING: 正在滑动中的状态 SCROLL_STATE_IDLE: NumberPicker停止滑动 |
NumberPicker.setMinValue(int minValue) 设置最小值 |
NumberPicker.setMaxValue(int maxValue) 设置最大值 |
NumberPicker.setValue(int value) NumberPicker设置初始选定值,如果不设置此项NumberPicker初始状态默认选中最小值 |
NumberPicker.getValue() 获取当前选定值,返回值int类型 |
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories