スクリーン上で指を上下させることで値を増減させられるコントローラーを書いてみました。
private class OnAreaTouched implements View.OnTouchListener {
double initialY = 0.0;
double previousY = 0.0;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
initialY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
double currentY = event.getY();
// if finger initially went upwards, then changed it's direction to downwards
if(currentY < initialY && currentY > previousY) {
initialY = previousY;
}
// if finger initially went downwards, then changed it's direction to upwards
if(currentY > initialY && currentY < previousY) {
initialY = previousY;
}
double diff = (initialY - currentY) / 100;
Log.d("MyTest", "initial: " + initialY + ", getY(): " + event.getY() + ", diff: " + diff);
mValue = mValue + diff;
// upper bound 400, lower bound 20
mValue = Math.max(Math.min(mValue, 400), 20);
String mValueString = "" + (int)mValue;
SpannableString mValueSpanString = new SpannableString(mValueString);
mValueSpanString.setSpan(new StyleSpan(Typeface.BOLD), 0, mValueSpanString.length(), 0);
mValueTV.setText(mValueSpanString);
previousY = event.getY();
break;
default:
break;
}
return true;
}
}