2011-09-14 2 views
1

나는 많은 레이아웃을 포함하는 뷰 프리퍼가 있습니다. 각 레이아웃에는 루트로 scrollview가 있습니다.Scrollviews 및 탐색 모음이 포함 된 Viewflipper

아래에는 viewflipper 아래에 내비게이션 막대 역할을하는 textviews가 들어있는 가로 스크롤보기가 있습니다.

@Override 
public boolean dispatchTouchEvent(MotionEvent ev){ 
super.dispatchTouchEvent(ev); 
return gestureDetector.onTouchEvent(ev); 
} 

그리고 스크롤 이제 날뛰는와 함께 작동합니다

내 원래 문제는 날뛰는가 내가있는 ScrollView를 추가하는 즉시 작동을 중지하지만, 나는 다음과 같은 코드를 추가이었다.

내가 지금 가지고있는 유일한 문제는 HSV 탐색 바가 약간 이상하게 작동한다는 것입니다. 때로는 새로운 콘텐츠를 선택하기 위해 슬라이드를 시도 할 때 HSV가 원래 위치로 돌아갑니다. HSV는 내가 다른 곳으로 뛰어 들려하고 다음 내용으로 넘어 가기를 원한다고 생각합니다. 이것은 물론 내가 스크롤하려고하는 속도에 의존합니다.

내비게이션 막대가 플리퍼와 독립적으로 작동하기를 원합니다.

코드를 이해하기 위해 노력하고 있지만 어디서든 해결할 수는 없습니다.

class MyGestureDetector extends SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
       return false; 
      // right to left swipe 
      if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       flipper.setInAnimation(flip_in_from_right); 
       flipper.setOutAnimation(flip_out_to_left); 
       flipper.showNext(); 

      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       flipper.setInAnimation(flip_in_from_left); 
       flipper.setOutAnimation(flip_out_to_right); 
       flipper.showPrevious(); 

      } 
     } catch (Exception e) { 
      // nothing 
     } 

그리고 재정의 :

@Override 
public boolean dispatchTouchEvent(MotionEvent ev){ 
super.dispatchTouchEvent(ev); 
return gestureDetector.onTouchEvent(ev); 
} 

은 다른 사람이 어떤 빛이 있나 내가 MyGestureDetector 클래스가

gestureDetector = new GestureDetector(new MyGestureDetector()); 
gestureListener = new View.OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     if (gestureDetector.onTouchEvent(event)) { 
      return true; 
     } 
     return false; 
    }}; 

:

나는 내에서 onCreate에 다음이 이?

+0

[ViewPager] (http://geekyouup.blogspot.com/2011/07/viewpager-example-from-paug.html)를 [ViewPagerIndicator lib] (https : // github. com/JakeWharton/Android-ViewPagerIndicator) 대신에 ViewFlipper를 사용할 수 있습니까? 내 의견으로는 ViewFlipper보다 낫다. (내 프로그램에서는 ViewFlipper를 사용했을 때 scrollview 내부의 목록에 fling이 작동하지 않는다.) – kameny

+0

Viewpager는 매우 흥미롭게 보입니다. 내 주요 코딩이 거의 완료되었지만 가치가 있는지 여부는 확실하지 않습니다. – Leon

+0

예 프로그래머 인생의 가장 어려운 단계입니다 : D, 그러나 ViewPaper는 ViewFlipper가 작동하지 않거나 다음 프로젝트에서 사용할 수있는 아주 좋은 대안입니다. 데모 프로젝트에서 ViewPager 예제 중 하나를 구현하여 장점과 단점을 존중 해 볼 수 있습니다. – kameny

답변

0

귀하의 HSV는 정확히 어디에 있습니까? 화면 하단에 고정되어 있습니까? 그렇다면 여기 내가하는 일이 있습니다. onFling 이벤트 내에서 fling의 Y 위치를 확인하고 HSV 내에 있지 않은지 확인하십시오. 그렇다면 거짓을 반환하고 당신은 잘 가야합니다.

+0

그것은 아래쪽에 고정되어 있습니다. 한 가지 해결책은 제스처가 해당 영역에서 구현되는 것을 막을 수 있다고 생각했습니다. 이 일에 대해 어떻게해야합니까 ?? – Leon

관련 문제