Я парил над этим несколько дней назад.Я пытаюсь иметь селектор для большого диапазона чисел ... в пределах int.Вы должны удерживать кнопку, и значение должно меняться медленно, и чем дольше вы нажимаете, тем быстрее оно меняется.Вы все знаете такую кнопку, не так ли?: D Он должен быть точным, но быстро вводить номер.Я использую OnTouchListener
.Событие позволяет .getDownTime()
.
Я много пробовал, но всегда получал только пропуск чисел (не очень, но слишком быстрых в использовании) или повторное увеличение значения при удерживании кнопки.Если бегать без изменений, это довольно быстро, но было бы неплохо, если бы он начал делать 10 100 или 1000 прыжков, если он удерживается достаточно долго.
Я подготовил небольшой SSCCE, похожий на этот:
public class ValueChangerSSCCE extends Activity implements OnTouchListener {
Button plusButton;
TextView valueView;
Button minusButton;
int value;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
plusButton = new Button(this);
plusButton.setText("+");
plusButton.setTextSize(120f);
plusButton.setOnTouchListener(this);
layout.addView(plusButton);
valueView = new TextView(this);
valueView.setGravity(Gravity.CENTER_HORIZONTAL);
valueView.setTextColor(Color.WHITE);
valueView.setText(value + "");
valueView.setTextSize(120f);
layout.addView(valueView);
minusButton = new Button(this);
minusButton.setText("-");
minusButton.setTextSize(120f);
minusButton.setOnTouchListener(this);
layout.addView(minusButton);
setContentView(layout);
}
/*
* Called when a button is pressed
*/
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v == plusButton) {
value++;
} else if (v == minusButton) {
value--;
}
valueView.setText(value + "");
return false;
}
}
Для устройств с низким разрешением может потребоваться уменьшить размеры текста.
Заранее спасибо!