프로젝트를 진행하다가 안드로이드의 개발자옵션처럼 빌드번호를 여러 번 클릭해
개발자옵션을 켜는 것과 비슷하게 클릭 횟수를 Count 해서 특정 코드를 실행하는 Listener가 필요했다.
배치되어 있는 버튼에 사용하였으면 바로 Activity나 Fragment에서 처리가 가능하겠지만 RecyclerView의 Item을 클릭 시 처리를 해야 했기 때문에 Click Listener를 Item에 따로 지정해주는 방식으로 작성했다.
Kotlin을 주로 사용하였지만 이번 프로젝트는 Java로 진행하여 시간이 날 때 코틀린으로 작성할 것이다.
일단 따로 Item에 지정해줄 ClickListener를 만들었다.
public abstract class OnClickCountListener implements View.OnClickListener {
private long CLICK_INTERVAL = 500;
private long lastClickedTime = 0;
private int count = 0;
public abstract void onCountClick(View v);
private long isSafe(){
return SystemClock.uptimeMillis() - lastClickedTime;
}
@Override
public void onClick(View v) {
count++;
if (count == 15){
onCountClick(v);
count = 0;
}
// CLICK_INTERVAL 시간 이내로 안누르면 초기화
if (isSafe() > CLICK_INTERVAL) {
count = 0;
}
lastClickedTime = SystemClock.uptimeMillis();
}
}
코드는 Click 시 count를 늘려 15번을 클릭하면 추상 메소드를 실행하게 되는데
CLICK_INTERVAL( 1000 = 1초)을 지정해 Click 했던 시간을 새로 Click 한 시간과 비교해 초과되면 count를 초기화하였다.
- 코드의 의도는 Click 마다 0.5초 안에 15번을 Click 하면 해당 추상 메소드를 실행한다.
그 후 Recycler Item Click 처리를 위해 생성한 Listener를 Adapter에 생성자로 넘겨준 후
onBindViewHolder를 탔을 때 원하는 View에 Listener를 등록해주었다.
Activity나 Framgnet 단에서 clickCountListener를 만들고 실행할 코드를 넣어
private OnClickCountListener clickCountListener = new OnClickCountListener() {
@Override
public void onCountClick(View v) {
Toast.makeText(getContext(), "15번 클릭 완료",Toast.LENGTH_SHORT);
//특정횟수 클릭 후 실행할 코드
}
};
Adapter를 생성할 때 같이 넣어주고 RecyclerView를 구성하면 끝
결과화면
'Android > Reference' 카테고리의 다른 글
View invalidate(), requestLayout() 의 차이 (0) | 2021.12.22 |
---|---|
Scroll 상, 하단바 숨기기 (CoordinatorLayout) (0) | 2021.12.16 |
화면켜짐/제어 (WakeLock, WindowFlag) (0) | 2021.11.24 |
Indicator (인디케이터) 실습 (0) | 2021.03.29 |
RecyclerView GridLayoutManager spansize 커스텀 (0) | 2021.03.26 |