Android数字选择器-NumberPicker

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

基础维护

开发东西先看下效果吧:

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context="com.example.googlenumberpicker.MainActivity" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:layout_marginLeft="50dp"
        android:layout_gravity="center_horizontal" >

        <NumberPicker
            android:id="@+id/hourpicker"
            android:layout_width="40dp"
            android:layout_height="wrap_content" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="时" />

        <NumberPicker
            android:id="@+id/minuteicker"
            android:layout_width="40dp"
            android:layout_height="wrap_content" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="分" />
    </LinearLayout>

</LinearLayout>

 Demo实现

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

Formatter事件:

 public String format(int value) {
        String tmpStr = String.valueOf(value);
        if (value < 10) {
            tmpStr = "0" + tmpStr;
        }
        return tmpStr;
    }

OnValueChangeListener事件:

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

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

SCROLL_STATE_FLING:手离开之后还在滑动

SCROLL_STATE_IDLE:不滑动

SCROLL_STATE_TOUCH_SCROLL:滑动中

  public void onScrollStateChange(NumberPicker view, int scrollState) {
        switch (scrollState) {
        case OnScrollListener.SCROLL_STATE_FLING:
            Toast.makeText(this, "后续滑动(飞呀飞,根本停下来)", Toast.LENGTH_LONG)
                    .show();
            break;
        case OnScrollListener.SCROLL_STATE_IDLE:
            Toast.makeText(this, "不滑动", Toast.LENGTH_LONG).show();
            break;
        case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
            Toast.makeText(this, "滑动中", Toast.LENGTH_LONG)
                    .show();
            break;
        }
    }

 初始化:

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

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

   private void init() {
    	hourPicker.setFormatter(this);
    	hourPicker.setOnValueChangedListener(this);
    	hourPicker.setOnScrollListener(this);
    	hourPicker.setMaxValue(24);
    	hourPicker.setMinValue(0);
    	hourPicker.setValue(9);

    	minutePicker.setFormatter(this);
    	minutePicker.setOnValueChangedListener(this);
    	minutePicker.setOnScrollListener(this);
    	minutePicker.setMaxValue(60);
    	minutePicker.setMinValue(0);
    	minutePicker.setValue(49);
    }

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

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

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

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

  最后显示的效果:

时间: 2024-12-18 08:26:27

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

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

原文:Android零基础入门第58节:数值选择器NumberPicker 上一期学习了日期选择器DatePicker和时间选择器TimePicker,是不是感觉非常简单,本期继续来学习数值选择器NumberPicker . 一.NumberPicker概述 NumberPicker 是用于选择一组预定义好数字的组件,用户既可以通过键盘输入数值,也可以通过滚动来选择数值. NumberPicker的常用方法如下: setMinValue(int minVal):设置该组件支持的最小值. setM

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

NumberPicker是Android3.0之后引入的一个控件,NumberPicker 是用于选择一组预定义好数字的控件.比如时间hour的选择只有0-23有效,则可以通过setMinValue和setMaxValue设定. 使用该控件时需注意他的两个listener和一个formatter:一个listener用于监听当前value的变化:一个listener用于监听该控件的scroll状态:formatter用于格式化显示该控件中的value.下面逐一介绍这几个接口: 1.NumberP

【Android】Android背景选择器selector用法汇总

一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片 <?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 默认时的背景图片--> <item android:drawable="@draw

Android文件选择器的实例分享

本文给大家讲解下Android文件选择器的使用.实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDialog控件. 此实例的实现过程很简单,这样可以让大家快速的熟悉Android文件选择器,提高开发效率. 网上曾经见到过一个关于文件选择器的实例,很多人都看过,本实例是根据它修改而成的,但更容易理解,效率也更高,另外,本实例有自己的特点:  1.监听了用户按下Back键的事件,使其返回上一层目录. 2.针对不同的文件类型(文件vs文件夹 , 目标文件vs其他文件

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

我想说的话 今天晚上我依然在图书馆写博客,其实此刻我的没心激动而忐忑,因为明天就是足球赛的决赛,我作为主力球员压力很大,因对对方很强大,但是那又怎么样.so what...我不会停止写博客的 NumberPicker简介 NumberPicker这个控件可以让你滑动来选择数值. 通过三个方法来设置: 1.setMinValue() 2.setMaxVlaue() 3.setValue() 代码示例 <?xml version="1.0" encoding="utf-8&

android背景选择器selector用法汇总

一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片 <?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 默认时的背景图片--> <item android:drawable="@draw

Android状态选择器用法总结

原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6284682.html 本文首先列出常见状态选择器的创建,然后按照常用控件来分别列出状态选择器的具体用法. 颜色状态选择器颜色状态选择器创建在res/color目录下,color目录一般不存在,我们自己创建即可. 颜色状态选择器只能用作改变颜色的地方,例如改变文字颜色等场合,不能作为背景, 当做背景时会出错,这点千万要注意. 以下为一个颜色状态选择器,今后可以参考这个创建其它的: <?xml ve

Android selector选择器的使用

通常按钮在点击前和后有两种状态,比如点击前为蓝色,点击后为灰色,且不再响应点击事件. 如果不使用selector选择器,点击后,就需要在程序中进行以下的类似操作 button1.setBackgroundResource(R.color.material_grey_300); button1.setTextColor(getResources().getColor(R.color.material_grey_50)); button1.setClickable(false); 如果使用selec

如何在android 文件选择器中选择多个图片或者视频?

我的android app有这样的需求,在进行照片和视频上传的时候,需要一次性的从照片/视频库选择多条进行上传 但是android原生态的sdk中,只能一个一个的进行选择和上传. 我想知道是否有其他的android上传库可以解决这个问题,提供一个多选的功能,可以使checkbox之类的,一次选择多个 处理方法 官方的图片选择器(但是不支持所有版本的androi,只支持API Level >=18) http://developer.android.com/reference/android/co