본문 바로가기
안드로이드

안드로이드 버튼 길게 터치 이벤트

by 코딩히어로 2022. 4. 1.
728x90

안드로이드에서 Button을 구현할 때 대부분 onclick 이벤트를 사용합니다.

버튼이 눌리면 이벤트가 발생하는 것인데 대부분의 기능은 onclick 이벤트만으로

가능하지만 어떠한 특수한 경우에는 버튼을 길게 눌러서 이벤트를 받아야 하는 일이 있습니다.

 

이럴 때 사용되는 것이 LongClick 이벤트입니다.

LongClick 이벤트라는 것은 말 그대로 버튼을 꾹 누르고 있을 때 발생하는 이벤트로

C언어 및 타 언어와 달리 안드로이드 시스템에서 판단하여 결과에 따라 이벤트를 발생시켜주기

때문에 개발자 입장에서는 굉장히 편리한 기능입니다.

 

Button test_btn = (Button)findViewById(R.id.btn);

test_btn.setOnLongClickListener(new OnLongClickListener(){
    @Override
    publick boolean onLongClick(View v){
    	// 이벤트 코드 구현
    	return true;
    }
}

 

위 코드와 같이 setOnLongClickListener를 등록하고 버튼을 길게 터치하면 이벤트가 발생합니다.

리턴 값으로 true를 주었는데 onLongClick 메서드 내에서 이벤트 처리가 완료됐으면 true를

이벤트 처리를 하지 않았으면 false를 리턴하면 됩니다.

 

 

응용 하나의 버튼에 롱 클릭, 단일 클릭 이벤트 동시 적용


하나의 버튼에 LongClick과 기존의 단일 클릭인 onClick을 동시에 적용하면 어떻게 될까요?

 

Button test_btn = (Button)findViewById(R.id.btn);

test.btn.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
        // 단일 클릭 이벤트
     }
}
test_btn.setOnLongClickListener(new OnLongClickListener(){
    @Override
    publick boolean onLongClick(View v){
    	// 롱 클릭 이벤트
    	return true;
    }
}

 

위와 같이 한 번만 클릭하면 단일 클릭 이벤트가 발생하고 1초 이상 누르고 있으면

롱 클릭 이벤트가 발생하게 됩니다.

이렇게 버튼에 히든 기능을 넣기 위해서 동시에 사용하기도 합니다.

728x90
반응형

댓글