마스터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일 답변
아 그런 방법도 있었네요 감사합니다
...