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

ViewFlipper 드래그를 이용한 화면 전환을 구현했는데...

0 추천

  안녕하세요 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;  
    }  
}  

위와같이 누를때와 뗄때의 터치좌표를 구하고 이를 이용해 슬라이드하는 것을 구현하였는데 버튼 위에서는 먹통입니다. 버튼 에 상관없이 구현하려면 어떻게 해야 할까요?

kmg123 (1,080 포인트) 님이 2014년 2월 27일 질문

1개의 답변

+1 추천
 
채택된 답변
ViewFlipper 대신 ViewPager를 사용해보세요. 그럼 터치 이벤트를 처리할 필요없고 버튼에 대해 염려할 필요도 없을 겁니다.
방귀과장 (18,940 포인트) 님이 2014년 2월 28일 답변
kmg123님이 2014년 2월 28일 채택됨
감사합니다 ^^
ViewPager 라는 것이 있군요 한수 배워갑니다~
...