안녕하세요.
궁금한점이 있어 질문드립니다.
다름이 아니라 뷰플리퍼의 예제를 보고 터치의 x좌표를 얻어 왼쪽으로 이동 할지 오른쪽으로 이동할지 를 정해
화면전환은 구성하였는데요.
여기서 터치 이벤트를 실행하였는데
해당 뷰의 클릭이벤트를 넣어 그 화면을 클릭하였을때 엑티비티 전환해주고싶습니다. 하지만 테스트 해본결과로는
클릭이벤트만 작동하던데. 이부분을 어떻게 해결해야되는지 궁금합니다.ㅠㅠ
혹시 관련예제 소스나 수정할부분이 있으면 알려주셨으면 좋겠습니다..
뷰 플리퍼 부분의 소스만 올리겠습니다.
view_1=(Button)findViewById(R.id.view_1);
view_2=(Button)findViewById(R.id.view_2);
view_3=(Button)findViewById(R.id.view_3);
view_4=(Button)findViewById(R.id.view_4);
view_5=(Button)findViewById(R.id.view_5);
flipper = (ViewFlipper)findViewById(R.id.viewFlipper);
flipper.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(v != flipper){
Log.d("IIIII","v != flipper");
return false;
}
if(event.getAction() == MotionEvent.ACTION_DOWN){
start = event.getX();
Log.d("IIIIII","start = " + start);
}else if(event.getAction() == MotionEvent.ACTION_UP){
end = event.getX();
if(start-end < -MOUSE_DRAG_SENSITIVITY){
flipper.showNext();
}else if(start-end > MOUSE_DRAG_SENSITIVITY){
flipper.showPrevious();
overridePendingTransition(R.anim.fade, R.anim.hold);
}else if(event.getAction() == MotionEvent.ACTION_MOVE){
if(start-event.getX() < - MOUSE_MOVE_SENSITIVITY){
start = event.getX();
flipper.showNext();
overridePendingTransition(R.anim.fade, R.anim.hold);
}else if(start-event.getX() > MOUSE_MOVE_SENSITIVITY){
start = event.getX();
flipper.showPrevious();
overridePendingTransition(R.anim.fade, R.anim.hold);
}
}
}
return true;
}
});
현재 이렇게 하고 각뷰의 버튼을 하나 생성하여 그버튼을 누르면 이동하게끔 설정이 되어있는데요.
혹시 터치와 화면 클릭 구분 하는 방법이 있으면 알려주셨으면 좋겠습니다.
좋은 하루 보내세요~.
터치이벤트의 리턴값을 true로 주셔서 다른뷰에 터치이벤트를 넘겨주지 못하는것같네요.
그래서 버튼이 flipper하위로 있는거라면 터치이벤트가 넘겨가지 않아서 클릭이벤트가 안일어나겟네요
맨밑의 return true 를 return false로 해보세요.
그래도 안되면 return true바로윗줄에
flipper.getChildAt(0).dispatchTouchEvent(event); 이런식으로 하위뷰에 터치이벤트를 넘겨줘보세요.