2012-02-28 157 views
0

我知道動畫效果以及如何將它們應用於onclicklistener,ontouchlistener等的視圖(佈局),但是當我將佈局向左或向右滑動時會發生哪些事件。在佈局中滑動動畫:android

previousButton.setOnClickListener(new OnClickListener() { 
     @Override 
     publicvoid onClick(View v) { 
       viewFlipper.setInAnimation(MainActivity.this,R.anim.view_transition_in_right); 
       viewFlipper.setOutAnimation(MainActivity.this,R.anim.view_transition_out_right); 
       viewFlipper.showPrevious(); 
     } 
    }); 
} 

我不想onclicklistener。即)如果我觸摸並向左滑動當前佈局,它應該熄滅並且下一個佈局應該在當前視圖中。如何執行此操作?

回答

1

使您的活動實現onGestureListener。

然後在你的活動添加

private GestureDetector gestureScanner; 
gestureScanner = new GestureDetector(this); 
private static final int SWIPE_MIN_DISTANCE = 100; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 100; 

然後overrid的的onTouchEvent(MotionEvent事件),如下圖所示:

@Override 
    public boolean onTouchEvent(MotionEvent event) { 
     return gestureScanner.onTouchEvent(event); 
    } 

而且最後,您需要在此改變onFling方法是這樣的:

@Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
      float velocityY) { 
     /* on scroll to the next page */ 
     if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY 
       ) { 
      //Ur code goes here 
     } 
     /* on scroll to the previous page */ 
     else if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
       && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY 
       ) { 
      //ur code goes here. 
     } 
     return false; 
    } 

希望這有助於。

+0

這適用於我,但不完全。我當前的佈局在頁面中有大量的視圖,當我在這些視圖的頂部滑動時,它不起作用。唯一的時間刷卡正常工作是如果我沿着應用程序頂部的標題欄滑動。有沒有辦法讓這個功能在整個屏幕上滑動? – JuiCe 2012-12-28 15:57:14

+0

我在這裏找到了http://developer.android.com/training/gestures/viewgroup.html解決方案。如果您使用ViewGroup檢測滑動,則可以實現onInterceptTouchEvent以獲取所有動作事件,並選擇它們是否必須由子視圖處理,或者它們是否構成滑動手勢。 – hara 2013-11-11 21:55:26

0

您需要查看傳呼機 -

ViewPager

很容易實現過,你只需要提供以類似的方式的適配器,你會與一個ListView。