Continuously increase integer value as the button is pressed

后端 未结 9 1295
长情又很酷
长情又很酷 2020-12-04 11:10

I\'m new to Android so sorry if the question is easy to answer. I have two buttons, a decrease and an increase button, and in the middle of them a TextView which displays a

9条回答
  •  孤街浪徒
    2020-12-04 11:38

    While the accepted answer is totally correct, it can be simplified a bit.

    Basically, we can optimize two things:

    • We don't need the OnTouchListener.
    • We can instantiate the runnable object just once instead of creating multiple objects.

    So this is my version:

    // global variables
    Handler handler = new Handler();
    Runnable runnable;
    
    increaseView.setOnLongClickListener(new View.OnLongClickListener() {
    
        @Override
        public boolean onLongClick(View v) {
    
            runnable = new Runnable() {
                @Override
                public void run() {
                    if (!increaseView.isPressed()) return;
                    increaseValue();
                    handler.postDelayed(runnable, DELAY);
                }
            };
    
            handler.postDelayed(runnable, DELAY);
            return true;
    
        }
    
    });
    

    Here the runnable object is reused. And when the view is not pressed anymore, it will stop calling itself.

    The decrease view or button can be defined in a similar way.

提交回复
热议问题