728x90
안드로이드 스튜디오의 버튼을 구현하여 숫자를 카운팅 할 때
setOnClickListener를 통해 한번 누를 때마다 하나의 카운팅을 하는 기능 구현이 가능합니다
하지만 숫자가 10, 20의 작은 범위의 값이 아닌 예를들어 0~999까지 올려야 된다면
버튼을 999번을 눌러야 하고 그만큼 시간도 많이 소요됩니다
이러한 문제를 해결하기 위해서 단순 클릭인 setOnClickListener를 이용한 카운팅도 구현하고
setOnTouchListener를 이용한 누르고 있을때 자동 카운팅 기능도 추가하면
사용자 입장에서는 많은 숫자를 올릴 때 버튼을 누르고 있기만 하면 되기에 매우 편리합니다
sensor_user_name_up.setOnTouchListener(new View.OnTouchListener() {
private Handler mHandler;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
if(mHandler != null) return true;
mHandler = new Handler();
mHandler.postDelayed(mAction, 500);
break;
case MotionEvent.ACTION_UP:
if(mHandler == null) return true;
mHandler.removeCallbacks(mAction);
mHandler = null;
break;
}
return false;
}
Runnable mAction = new Runnable() {
@Override public void run() {
if(bleObject.getSensorName()<999){
bleObject.setSensorName(bleObject.getSensorName()+1);
}
sensor_user_name.setText("Gas Name:" + bleObject.getSensorNameString());
check1.setChecked(true);
mHandler.postDelayed(this, 10);
}
};
});
해당 코드에서는 MotionEvent.ACTION_DOWN이 발생할 때 500ms 이상 눌렸는지를
확인하여 mAction Runnable을 실행시킵니다
Runnable 내에서는 10ms 간격으로 숫자를 카운팅하기 때문에 일반적으로 사용자가 느끼기에
숫자가 연속적으로 올라가는것처럼 느껴집니다
10ms 단위이기 때문에 누르고 있는 동안 1초당 약 100의 카운팅이 가능합니다
728x90
반응형
'안드로이드' 카테고리의 다른 글
[Android] 이미지 180도 회전 (1) | 2023.11.11 |
---|---|
[Android] WebView란? (2) | 2023.10.29 |
[Android] 뷰페이저 페이지 스크롤 막는방법 (1) | 2023.05.19 |
[Android] MPAndroidChart x축 표시 제한하기 (1) | 2023.05.19 |
[Android] 자동 어플 재시작 만들기 (1) | 2023.03.30 |
댓글