2013年7月17日水曜日

シークバー、 スライダー(SeekBar)

ボリューム調整などの量的な設定をする時に
よく出てくるのが、シークバー。
つまみをタッチして、スライドさせるという
スマホっぽい機能です。

//シークバーを生成
SeekBar oSeek = new SeekBar(contextf型);

//初期値
oSeek.setProgress(int型);
//値の最大値を設定 oSeek.setMax(int型);

//値の取得
oSeek.getProgress();
//つまみの画像をチェンジ
oSeek.setThumb(Drawable型);

//背景画像を変更
oSeek.setProgressDrawable(Drawable型);

シークバーはわりとふつうな命令で無難に動くので、
特に挙動で困ることはないと思います。

下記にサンプルソースを上げます。
■サンプルソース
package com.example.nannka;


import android.os.Bundle;
import android.app.Activity;

import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //基礎画面の作成
        LinearLayout oLayout = new LinearLayout(getApplicationContext());
        oLayout.setOrientation(LinearLayout.VERTICAL);
        setContentView(oLayout);

        //シークバーを生成
        SeekBar oSeek = new SeekBar(getApplicationContext());
        //初期値
        oSeek.setProgress(10);
        //値の最大値を設定
        oSeek.setMax(140);
        //背景画像を変更
//        oSeek.setProgressDrawable( getResources().getDrawable(R.drawable.ic_launcher) );

        //つまみの部分の画像を変更
        oSeek.setThumb(getResources().getDrawable(R.drawable.ic_launcher));
        //値変更時に呼ばれる
        oSeek.setOnSeekBarChangeListener( new OnSeekBarChangeListener() {

            public void onProgressChanged(SeekBar seekBar,int progress, boolean fromUser) {
                //動かすと呼ばれる
                Toast.makeText(getApplicationContext(), "設定値:" + seekBar.getProgress(), Toast.LENGTH_SHORT).show();
                Toast.makeText(getApplicationContext(), "progress:" + String.valueOf(progress), Toast.LENGTH_SHORT).show();
            }

            public void onStartTrackingTouch(SeekBar seekBar) {
                // 触れると呼ばれる
            }
         
            public void onStopTrackingTouch(SeekBar seekBar) {
                // 離すと呼ばれる
                seekBar.setSecondaryProgress(seekBar.getProgress());
            }
        });
        
        oLayout.addView(oSeek);
    }
   
}
■実行結果






こんな感じで完了です。
実用的に使用する際には黄色いバーの長さに気をつけてね。

0 件のコメント:

コメントを投稿