마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 두번버튼 클릭이벤트

0 추천
안드로이드 두번버튼 클릭해서 이벤트 실행하는건데

 

우리가 바탕화면 아이콘을 더블클릭해서 들어가는것처럼

 

일정한 시간안에 못누르면 리셋 되고

 

빠르게 2번 눌러야 이벤트 발생되는게 가능한가여?
익명사용자 님이 2015년 6월 18일 질문

4개의 답변

0 추천
countdown timer나 runnable+handler 사용하세요
쎄미 (162,410 포인트) 님이 2015년 6월 18일 답변
0 추천
libre2k (7,420 포인트) 님이 2015년 6월 18일 답변
0 추천
보통 백키로 어플종료할때 백키를 연속 2번 눌렀을때 종료하도록 설정한 어플리케이션이 많은데
아래와 같은 소스를 사용합니다.
 
private class DoubleTabController {
  private long touchPressedTime = 0;
  prinate long resetTime = 2000; // 리셋 타임 설정 - 2초 
  private Activity activity;
 
  public DoubleTabController(Activity context) {
    this.activity = context;
  }
 
  public void onTouchPressed() {
    if (System.currentTimeMillis() > touchPressedTime + resetTime ) {
      // 첫번째 터치
      touchPressedTime = System.currentTimeMillis();
      return;
    }
    // 첫번째 터치후 두번째 터치를 resetTime에 설정된 2초안에 하지 않을시 아래 두번째 터치부분은 실행되지 않음.
    if (System.currentTimeMillis() <= touchPressedTime + resetTime ) {
      // 두번째 터치 
      // 동작 수행.
    }
  }
}
 
 
익명사용자 님이 2015년 6월 18일 답변
0 추천
직접 구현했어용 ㅋ 
@Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
 
                switch (motionEvent.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        int upEndTime = (int) (System.currentTimeMillis());
                        eventEndTime = upEndTime - successTime;
                        Log.e("테스트", "시간: " + (eventEndTime) / 1000);
                        if ((eventEndTime / 1000) > 10 && passCount) {
                           시간초과
                            temp = 0;
                            passCount = false;
                        }
                        touchDownTime = (System.currentTimeMillis());
 
                        break;
                    case MotionEvent.ACTION_UP:
 
                        touchUpTime = (System.currentTimeMillis()) - touchDownTime;
 
                        if ((touchUpTime / (double) 1000) >= 0) {
                            temp++;
                            passCount = true;
                        }
                        if (temp == 1) {
                            successTime = (int) (System.currentTimeMillis());
                        }
                        if ((temp >= 4) && (passCount == true)) {
                           여기에 해당 이벤트메소드 넣으면됨
                            temp = 0;
                            passCount = false;
                        }
                        break;
                }
                return true;
            }
        });
 
질문자분하고 똑같은 고민하다 구현한겁니다 
 if ((eventEndTime / 1000) > 10 && passCount) {
}
부분이 일정시간안에 특정터치횟수되야 처리되는 부분이에요.
예림이그코드좀바바 (2,470 포인트) 님이 2015년 6월 18일 답변
예림이그코드좀바바님이 2015년 6월 18일 수정
...