Android 左右滑動切換頁面或Activity的效果實現

對於Android桌面可以用手勢左右滑動進行切換。或者大家用過iReader的一定被其豐富的手勢折服吧。現在看看自己的多個Activy之間如何切換呢

 

1、需要繼承OnGestureListener和OnDoubleTapListener,如下:

Java代碼 複製代碼 收藏代碼
  1. public class ViewSnsActivity extends Activity implements OnTouchListener, OnGestureListener  

 

2、在添加mGestureDetector的定義,並在ViewSnsActivity的onCreate函數中加入其頁面佈局的setOnTouchListener事件

Java代碼 複製代碼 收藏代碼
  1. GestureDetector mGestureDetector;  
  
Java代碼 複製代碼 收藏代碼
  1. public void onCreate(Bundle savedInstanceState) {   
  2.         super.onCreate(savedInstanceState);   
  3.         setContentView(R.layout.view_sns_activity);   
  4.            
  5.         mGestureDetector = new GestureDetector((OnGestureListener) this);     
  6.         LinearLayout viewSnsLayout = (LinearLayout)findViewById(R.id.viewSnsLayout);     
  7.         viewSnsLayout.setOnTouchListener(this);     
  8.         viewSnsLayout.setLongClickable(true);     
  9.     }  
 

3、重載onFling函數

Java代碼 複製代碼 收藏代碼
  1.     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,   
  2.             float velocityY) {   
  3.            
  4.         if (e1.getX()-e2.getX() > snsConstant.getFlingMinDistance()   
  5.                 && Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) {   
  6.   
  7. //          切換Activity   
  8. //          Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);   
  9. //          startActivity(intent);   
  10.             Toast.makeText(this"向左手勢", Toast.LENGTH_SHORT).show();   
  11.         } else if (e2.getX()-e1.getX() > snsConstant.getFlingMinDistance()   
  12.                 && Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) {   
  13.                
  14. //          切換Activity   
  15. //          Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);   
  16. //          startActivity(intent);   
  17.             Toast.makeText(this"向右手勢", Toast.LENGTH_SHORT).show();   
  18.         }   
  19.            
  20.         return false;     
  21.     }  

其中SnsConstant如下:

Java代碼 複製代碼 收藏代碼
  1. public class SnsConstant {   
  2.     private static final int FLING_MIN_DISTANCE = 50;     
  3.     private static final int FLING_MIN_VELOCITY = 0;   
  4.        
  5.     public static int getFlingMinDistance() {   
  6.         return FLING_MIN_DISTANCE;   
  7.     }   
  8.     public static int getFlingMinVelocity() {   
  9.         return FLING_MIN_VELOCITY;   
  10.     }   
  11. }  

 

4、重載onTouch函數

Java代碼 複製代碼 收藏代碼
  1. public boolean onTouch(View v, MotionEvent event) {   
  2.     return mGestureDetector.onTouchEvent(event);   
  3. }  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章