2012-10-25 7 views
3

ViewFlipper가 있고 여기에 레이아웃이있는 네 개의 scrollview가 있습니다.ViewFlipper에서 스 와이프

나는 슬쩍 (각있는 ScrollView에 대한) 다음 코드를 사용

ScrollView View1 = (ScrollView) findViewById(R.id.View1); 
    View1.setOnTouchListener(new OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 

      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       FirstX = (int) event.getX(); 
      } 

      if (event.getAction() == MotionEvent.ACTION_MOVE) { 
       int LastX = (int) event.getX(); 

       if (FirstX - LastX > SWIPE_MIN_DISTANCE) { 
        viewFlipper.setInAnimation(slideLeftIn); 
        viewFlipper.setOutAnimation(slideLeftOut); 
        viewFlipper.showNext(); 
       } else if (LastX - FirstX > SWIPE_MIN_DISTANCE) { 
        viewFlipper.setInAnimation(slideRightIn); 
        viewFlipper.setOutAnimation(slideRightOut); 
        viewFlipper.showPrevious(); 
       } 
      } 

      return true; 
     } 
    }); 

그것은 작동하지만 2보기보기 1 스 와이프하면, 내가보기 2와 3은 함께 혼합 볼 것 같습니다 마침내 뷰 4를 보여줍니다.

그래서 각 뷰의 OnTouchListeners가 서로 후에 호출됩니다. 어떻게 이런 일이 일어나지 않도록 할 수 있습니까?

짧고 빠른 스 와이프는 수행해야 할 작업을 수행합니다.

RG, 에릭

답변

1

MotionEvent.ACTION_MOVE에있는 코드를 MotionEvent.ACTION_UP으로 이동해야 스 와이프가 발생합니다. 자, 손가락으로 화면을 움직이기를 원하지 않는다면 방금 언급 한 JafarKhQ와 같이 ViewPager을 구현해야합니다.

+0

ACTION_MOVE에서 ACTION_UP (으)로 변경하면 트릭을 만들었습니다. 이제 문제없이 scrollviews 사이를 스 와이프 할 수 있습니다. 덕분에 . – Eric

1

setOnTouchListener을했거나 시간 (손가락을 슬라이딩하면서)라는 것, 그래서

viewFlipper.setInAnimation(slideLeftIn); 
viewFlipper.setOutAnimation(slideLeftOut); 
viewFlipper.showNext(); 

내가 당신이 ViewPager를 사용하는 것이 좋습니다 여러 시간

라고합니다 대신 ViewFlipper.

+1

답변에 질문이없는 경우 댓글로 추가하십시오. –

+0

그런 종류의 것은 나를 처음부터 다시 일하게하고 싶지 않은 곳으로 되돌립니다. 레이아웃 사이를 실제로 스 와이프 할 수있어서 너무 기뻤습니다. – Eric

+0

답변을 업데이트했습니다. 죄송합니다. – JafarKhQ