シークバー
シークバーを使うと値の設定が簡単にできます。
package com.example.test.test60;
import android.graphics.Point;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.RelativeLayout;
//TextViewを使用する宣言
import android.widget.SeekBar;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//setId用の管理番号
private int mNo1;
private int mNo2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
RelativeLayout layout = new RelativeLayout(this);
setContentView(layout);
//座標の初期設定
int x=0;
int y=0;
int width=0;
int height=0;
//配置を設定
RelativeLayout.LayoutParams obj1 = null;
mNo1 = View.generateViewId();
mNo2 = View.generateViewId();
WindowManager windowManager=getWindowManager();
Display display=windowManager.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int ScreenWidth=0;
ScreenWidth=size.x;
y=50;
height=60;
width=400;
x=(ScreenWidth-width) / 2;
obj1=getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
SeekBar seekBar = new SeekBar(this);
seekBar.setId(mNo1);
seekBar.setMax(10);
seekBar.setProgress(0);
seekBar.setOnSeekBarChangeListener(
new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
//途中
Log.d("SeekBar","onProgressChanged");
//public synchronized int getProgress()
setTextViewText(seekBar.getProgress());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
//開始
Log.d("SeekBar","onStartTrackingTouch");
setTextViewText(seekBar.getProgress());
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
//終了
Log.d("SeekBar","onStopTrackingTouch");
setTextViewText(seekBar.getProgress());
}
//ログ出力結果イメージ
/*
SeekBar: onStartTrackingTouch
SeekBar: onProgressChanged
SeekBar: onProgressChanged
SeekBar: onStopTrackingTouch
*/
}
);
layout.addView(seekBar, obj1);
y+=height+10;
//ラベルを設置
x=50;
width=300;
obj1 = getLayoutObject(width, height);
obj1.leftMargin=x;
obj1.topMargin=y;
TextView textView=new TextView(this);
textView.setId(mNo2);
textView.setText("ここに結果が表示されます。");
layout.addView(textView, obj1);
textView=null;
}
private void setTextViewText(int iValue)
{
TextView textView=(TextView)findViewById(mNo2);
textView.setText(String.format("現在の値 : %d",iValue));
textView=null;
}
//レイアウトを決定するオブジェクトを生成し渡します
private RelativeLayout.LayoutParams getLayoutObject(int width,int height)
{
return new RelativeLayout.LayoutParams(width, height);
}
}
|
最大値はsetMaxを使います。
開始位置はsetProgressで設定してください。
setOnSeekBarChangeListenerを宣言すると
各イベントが途中で自動生成してくれるので
そのイベント内に必要な処理を実装することになります。
|
|