我有一個viewflipper其中包括一些佈局。每個佈局都有一個滾動視圖作爲根。Viewflipper與滾動視圖和導航欄
在viewflipper下方,我有一個水平滾動視圖,其中包含充當導航欄的textviews。
我原來的問題是,掃視停止爲我增加了一個滾動視圖儘快工作,但我添加以下代碼:
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
super.dispatchTouchEvent(ev);
return gestureDetector.onTouchEvent(ev);
}
而且滾動現在一扔工作一起。
我現在唯一的問題是,HSV導航欄現在有點奇怪。有時當我試圖滑過它,選擇新的內容時,HSV會回彈到原來的位置。其他時候,HSV認爲我想扔掉並移動到下一個內容。這當然取決於我試圖滾動它的速度。
我希望導航欄獨立於腳蹼工作。
我想了解代碼來解決它自己,但沒有得到任何地方。
我在我的onCreate如下:
gestureDetector = new GestureDetector(new MyGestureDetector());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}};
我有MyGestureDetector類:
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);
}
任何人都可以擺脫任何輕這個?
您是否已通過兼容性軟件包[ViewPagerIndicator lib](https:// github)嘗試[ViewPager](http://geekyouup.blogspot.com/2011/07/viewpager-example-from-paug.html) com/JakeWharton/Android-ViewPagerIndicator)而不是ViewFlipper?在我看來,這比ViewFlipper更好,我遇到了很多問題(在我的程序中,當我使用ViewFlipper時,在scrollview裏面的列表不會起作用)。 – kameny
Viewpager看起來很有趣。不知道它是否值得,但我的主要編碼差不多完成了! – Leon
是的,這是程序員生活中最困難的一步:D,但是如果ViewFlipper不起作用,或者可能在您將使用它的下一個項目上,ViewPager是一個非常好的選擇。嘗試在演示項目中實現一個ViewPager示例之後,您可以尊重優點和缺點。 – kameny