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

터치가 안될때의 동작에 대한 질문입니다.

0 추천

안녕하세요 이클립스를 이제 막 배워나가는 중의 초보자입니다.

화면을 터치하면 그 터치되는 횟수를 화면에 표시해주고

화면이 터치되지 않을때 일정시간이(30초) 경과하면 종료되는 그런앱을 만들어보는 중인데요

 

화면터치할때 터치되는 횟수를 화면에 표시하는건 setOnTouchListener 로 해서 어찌어찌 구현헀는데

화면이 터치되지 않을때를 모르겠습니다;;

터치리스너 안에다 터치되지 않을때의 동작을 기술해서 터치가 없을때의 동작을 할수가 없다는건 알겠는데 

그럼 터치안될때의 리스너를 이용해서 다시 조건문으로 해서 해봐야겠다 싶은데 어떻게 해야할지 감이 안잡하네요;; 

아직 제가 개념자체를 잘못 이해하고 있는 부분인건지 힌트나 키워드좀 부탁드립니다.

 

package org.androidtown.l;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.EditText;
 
 
public class MainActivity extends Activity {
 
    EditText editText1;
    int touchCount = 0;
    int timeLimit = 30;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        editText1 = (EditText) findViewById(R.id.editText1);
        View view1 = (View) findViewById(R.id.view1);
        view1.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event){
                 
        if(event.getAction() == MotionEvent.ACTION_DOWN){
                    incrTouchCount();
                    showTouchCount();
                }              
        else if(event.getAction() != MotionEvent.ACTION_DOWN){
                    timeCheck();
                }  
        return true;
            }
        });
            }
 
    private void incrTouchCount() {
        touchCount = touchCount + 1;
    }
     
    private void showTouchCount() {
        editText1.setText("터치한 횟수 : " + touchCount);
    }
    private void timeCheck() {
        long time1 = System.currentTimeMillis ();
        long time2 = System.currentTimeMillis ();
        long time3 = ( time2 - time1 ) / 1000;
         
        long endTime = timeLimit - time3;
     
        if(endTime <= 0){
            System.exit(0);
        }      
    }
         
    public void onButton1Clicked(View v) {
        finish();
    }  
}

 

 

익명사용자 님이 2015년 1월 12일 질문

1개의 답변

+1 추천
액티비티 생성될때 30초짜리 타이머 돌리세요, 30초되면 종료되게끔 로직구현하시고요,

그리고 터치이벤트 발생때 타이머 리셋기능 구현하시면 되겠네요.

이렇게 하시면 터치이벤트없으면 타이머가 30초 다 채워서 종료가 될테고, 터치 발생하면

타이머가 계속 리셋되서 종료가안되겠죠?
익명사용자 님이 2015년 1월 13일 답변
아 그런 방법도 있었네요 감사합니다
...