Android 左右滑动切换页面或Activity的效果实现

对于Android桌面可以用手势左右滑动进行切换。或者大家用过iReader的一定被其丰富的手势折服吧。现在看看自己的多个Activy之间如何切换呢

 

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

Java代码   收藏代码
  1. public   class  ViewSnsActivity  extends  Activity  implements  OnTouchListener, OnGestureListener  
public class ViewSnsActivity extends Activity implements OnTouchListener, OnGestureListener

 

2、在添加mGestureDetector的定义,并在 ViewSnsActivity的onCreate函数中加入其页面布局的setOnTouchListener事件

 

Java代码   收藏代码
  1. GestureDetector mGestureDetector;  
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.     }  
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_sns_activity);
        
        mGestureDetector = new GestureDetector((OnGestureListener) this);  
        LinearLayout viewSnsLayout = (LinearLayout)findViewById(R.id.viewSnsLayout);  
        viewSnsLayout.setOnTouchListener(this);  
        viewSnsLayout.setLongClickable(true);  
    }
 

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.     }  
	public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
			float velocityY) {
		
		if (e1.getX()-e2.getX() > snsConstant.getFlingMinDistance()
				&& Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) {

// 			切换Activity
//			Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);
//			startActivity(intent);
			Toast.makeText(this, "向左手势", Toast.LENGTH_SHORT).show();
		} else if (e2.getX()-e1.getX() > snsConstant.getFlingMinDistance()
				&& Math.abs(velocityX) > snsConstant.getFlingMinVelocity()) {
			
//			切换Activity
//			Intent intent = new Intent(ViewSnsActivity.this, UpdateStatusActivity.class);
//			startActivity(intent);
			Toast.makeText(this, "向右手势", Toast.LENGTH_SHORT).show();
		}
		
		return false;  
	}

其中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. }  
public class SnsConstant {
    private static final int FLING_MIN_DISTANCE = 50;  
    private static final int FLING_MIN_VELOCITY = 0;
    
	public static int getFlingMinDistance() {
		return FLING_MIN_DISTANCE;
	}
	public static int getFlingMinVelocity() {
		return FLING_MIN_VELOCITY;
	}
}

 

4、重载onTouch函数

 

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

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值