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

최상위 뷰에서의 터치 구현

0 추천

안녕하세요, 다른 분의 도움으로 최상위 뷰에 이미지를 띄우는데 성공하였습니다.

염치불구하고 한가지만 더 질문 올리겠습니다.ㅜ 최상위뷰에 올라간 이미지를

터치하면 토스트를 띄우고 싶은데요, 코드는 현재 다음과 같습니다.

public class AlwaysOnTopService extends Service implements View.OnTouchListener{							
	private ImageView imgView1;//항상 보이게 할 뷰
	
	@Override
	public IBinder onBind(Intent arg0) { return null; }
		
	@SuppressLint("NewApi")
	@Override
	public void onCreate() {
		super.onCreate();

		Point mPoint = new Point();
		WindowManager mWindowmanager = (WindowManager) getSystemService(WINDOW_SERVICE);	//윈도우 매니저 불러옴.
		Display mDisplay = mWindowmanager.getDefaultDisplay();
		mDisplay.getSize(mPoint);
		
		imgView1 = new ImageView(this);
		imgView1.setImageResource(R.drawable.ic_launcher);
		imgView1.setAlpha(127);
		imgView1.setScaleType(ScaleType.FIT_XY);
		
		WindowManager.LayoutParams myParam = new WindowManager.LayoutParams(
				mPoint.x / 3,
				mPoint.y / 4,
				WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,					//항상 최 상위에 있게
				WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,		//터치 인식, 나중에 기능 추가를 위해 일단 넣어둠
				PixelFormat.TRANSLUCENT);
		
		myParam.gravity = Gravity.LEFT | Gravity.TOP;
		myParam.verticalMargin = 0.1f;
		myParam.horizontalMargin = 0.1f;
		mWindowmanager.addView(imgView1, myParam);

	}

	@Override
	public void onDestroy() {
		super.onDestroy();
		if(imgView1 != null)		//서비스 종료시 뷰 제거. *중요 : 뷰를 꼭 제거 해야함.
		{
			((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(imgView1);
			imgView1 = null;
		}
	}

	@Override
	public boolean onTouch(View v, MotionEvent event) {
		// TODO Auto-generated method stub
		if(event.getAction() == MotionEvent.ACTION_OUTSIDE) {
            //Request parent to do not intercept touch event.
			Toast.makeText(this, "토스트 알림 메세지 테스트", Toast.LENGTH_SHORT).show();
		}			
		return false;
	}
}

View.OnTouchListener를 추가적으로 적용하였고, onTouch 메소드를 오버라이드하여

토스트 메시지를 띄우고자 합니다. 하지만 이미지를 터치해도 반응이 없는 상태입니다.

조언 부탁드립니다. 감사합니다.

ohyeaha (450 포인트) 님이 2014년 7월 15일 질문

1개의 답변

+3 추천
 
채택된 답변
setOnTouchListener 안보이네요.
익명사용자 님이 2014년 7월 15일 답변
ohyeaha님이 2014년 7월 15일 채택됨
빙고!!! ~~ 저이미지.setOnTouchListener(디스);
...