Обработка событий Android

#android #android-event

#Android #android-событие

Вопрос:

У меня есть изображение для добавления 1 к некоторому edittext, и я написал код для обработки события onclick этого изображения, и оно работает нормально. Но я должен реализовать, что если пользователь нажимает на изображение, он должен увеличивать edittext, и если он сохраняет изображение в нажатом состоянии, он должен увеличивать edittext для большего количества значений, что зависит от того, как долго он удерживал изображение нажатым.

Ответ №1:

Что вы могли бы сделать, так это использовать обработчик, который выполняет runnable в непрерывном цикле во время нажатия на изображение. Выполняемый файл будет содержать код приращения:

 private int _startIncrementRate = 750;
private int _incrementRate = 50;
private Handler _handler;
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    _handler = new Handler();
    _img.setOnTouchListener(new View.OnTouchListener()
    {
        public boolean onTouch(View view, MotionEvent motionEvent)
        {
            switch (motionEvent.getAction())
            {
                case MotionEvent.ACTION_DOWN:
                    IncrementEditText();
                    _handler.postDelayed(handler_run, _startIncrementRate);
                    break;
                case MotionEvent.ACTION_UP:
                    _handler.removeCallbacks(handler_run); // stop runnable from executing
                    break;
            }
            return false;
        }
    });
}
private Runnable handler_run = new Runnable()
{
    public void run()
    {
        IncrementEditText();
        _handler.postDelayed(this, _incrementRate);
    }
};
private void IncrementEditText()
{
    /* increment editText code here */
}