안녕하세요 ViewFlipper 드래그를 이용한 화면 전환을 구현하였고 잘 작동 합니다.
화면에 텍스트 같은 것들이 있을 때는 잘 작동합니다. 그런데, 버튼같은 것들 위에서는 작동을 하지 않습니다..
public class MainActivity1 extends Activity implements OnTouchListener {
/** ViewFlipper 컴포넌트 객체 */
private ViewFlipper m_viewFlipper;
/** ViewFilpper 안에서 터치된 X축의 좌표 */
private int m_nPreTouchPosX = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
m_viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper1);
m_viewFlipper.setOnTouchListener(this);
// ViewFlipper에 서브 레이아웃 추가
LinearLayout sub1 = (LinearLayout) View.inflate(this,
R.layout.main, null);
LinearLayout sub2 = (LinearLayout) View.inflate(this,
R.layout.sub_view2, null);
LinearLayout sub3 = (LinearLayout) View.inflate(this,
R.layout.sub_view3, null);
m_viewFlipper.addView(sub1);
m_viewFlipper.addView(sub2);
m_viewFlipper.addView(sub3);
}
private void MoveNextView() {
m_viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.appear_from_right));
m_viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.disappear_to_left));
m_viewFlipper.showNext();
}
private void MovewPreviousView() {
m_viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.appear_from_left));
m_viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.disappear_to_right));
m_viewFlipper.showPrevious();
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
m_nPreTouchPosX = (int) event.getX();
}
if (event.getAction() == MotionEvent.ACTION_UP) {
int nTouchPosX = (int) event.getX();
if (nTouchPosX < m_nPreTouchPosX) {
MoveNextView();
} else if (nTouchPosX > m_nPreTouchPosX) {
MovewPreviousView();
}
m_nPreTouchPosX = nTouchPosX;
}
return true;
}
}
위와같이 누를때와 뗄때의 터치좌표를 구하고 이를 이용해 슬라이드하는 것을 구현하였는데 버튼 위에서는 먹통입니다. 버튼 에 상관없이 구현하려면 어떻게 해야 할까요?