관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[안드로이드] 버튼 중복클릭 방지하기 본문

안드로이드/자바 & Previous

[안드로이드] 버튼 중복클릭 방지하기

막무가내막내 2019. 6. 24. 00:09
728x90

1. 첫번째 방법 클릭리스너 안에 시간초를 재서 구현

private long mLastClickTime = 0;

...

// inside onCreate or so:

findViewById(R.id.button).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // mis-clicking prevention, using threshold of 1000 ms
        if (SystemClock.elapsedRealtime() - mLastClickTime < 1000){
            return;
        }
        mLastClickTime = SystemClock.elapsedRealtime();

        // do your magic here
    }
}

출처 : https://stackoverflow.com/questions/5608720/android-preventing-double-click-on-a-button

 

Android Preventing Double Click On A Button

What is the best way to prevent double clicks on a button in Android?

stackoverflow.com

 

 

2. 클릭리스너로 구현

public abstract class OnSingleClickListener implements View.OnClickListener {
    //중복클릭시간차이
    private static final long MIN_CLICK_INTERVAL=600;
    
    //마지막으로 클릭한 시간
    private long mLastClickTime;

    public abstract void onSingleClick(View v);

    @Override
    public final void onClick(View v) {
    	//현재 클릭한 시간
        long currentClickTime=SystemClock.uptimeMillis();
        //이전에 클릭한 시간과 현재시간의 차이
        long elapsedTime=currentClickTime-mLastClickTime;
        //마지막클릭시간 업데이트
        mLastClickTime=currentClickTime;
		
        //내가 정한 중복클릭시간 차이를 안넘었으면 클릭이벤트 발생못하게 return
        if(elapsedTime<=MIN_CLICK_INTERVAL)
            return;
		//중복클릭시간 아니면 이벤트 발생
        onSingleClick(v);        
    }
}



//텍스트뷰에 사용예제
mTextView.setOnClickListener(new OnSingleClickListener() {
            @Override
            public void onSingleClick(View v) {
            	//구현
            }
     };
728x90
Comments