2013年4月23日火曜日

ピッカー(NumberPicker)

Version11から、使えるようになった機能のNumberPickerを紹介します。

指をスライドすると数値がくるくる回って、スマホ感を演出できます。

注意点としては、Version11以降しか対応していないことです。

丁度スマホが流行りだしたAndroid2.2、Android2.3の頃の端末に対応していないのは使いづらい点ではありますが。。。。


また、Version11より前でも使えるライブラリ(個人で作った)も公開されていますが、端末によっては動かない等ありますので、あんまりお勧めはません。。。


■サンプルソース
package com.pulepule.linear;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.util.Log;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.NumberPicker;
import android.widget.Toast;
import android.widget.NumberPicker.OnValueChangeListener;

public class MainActivity extends Activity implements OnValueChangeListener{
 
    //レイアウト用の定数
    final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //基レイアウトの作成
        LinearLayout oLayout = new LinearLayout(getApplicationContext());
        //基レイアウトを画面に設定
        setContentView(oLayout);
  
        //背景を黒にする(見やすいように)
        oLayout.setBackgroundColor(Color.BLACK);
        //真ん中にパーツを寄せる。 | 区切りで複数記述できます。
        oLayout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL );

        //データピッカーの生成
        NumberPicker oPicker = new NumberPicker(getApplicationContext());
        //データピッカーの最小値を設定
        oPicker.setMinValue(3);
        //データピッカーの最大値を設定
        oPicker.setMaxValue(1120);
        //データーピッカーの背景色を
        oPicker.setBackgroundColor(Color.BLUE);
        //値が変更された時に通知するリスナー
        oPicker.setOnValueChangedListener(this);

        oLayout.addView(oPicker, new LinearLayout.LayoutParams(WC, WC));
        //値をピッカーに設定
        oPicker.setValue(5);
    }

    @Override
    public void onValueChange(NumberPicker picker, int iBefValue, int iActValue) {
        Toast.makeText(getApplicationContext(), String.valueOf(iActValue), Toast.LENGTH_SHORT).show();
        Log.d("ひとつ前の選択",String.valueOf( iBefValue ));
        Log.d("picker.getValue()",String.valueOf( picker.getValue()));
    }
}

■実行結果




こんな感じでできました。



//データピッカーの生成
NumberPicker oPicker = new NumberPicker(getApplicationContext());

//データピッカーの最小値を設定
oPicker.setMinValue(3);
//データピッカーの最大値を設定
oPicker.setMaxValue(1120);



上記の処理でピッカーの生成と
ダイヤルの最小値と最大値を設定しています。

//値をピッカーに設定
oPicker.setValue(5);

この処理で、初期値を設定しています。
現在設定されている値を初期値にするのが良いでしょう。

現在、選択されている値の取得は

picker.getValue()

int型で返されます。


0 件のコメント:

コメントを投稿