Android 滑动切换页面(记录)

Android 滑动切换页面(记录)

(2012-12-04 16:20:03)

转载

 

分类: Android

   曾经听到一句经典名言“要想挣钱,就要不要脸;要想持续挣钱,就要持续不要脸”,很现实的一句话,公司中的一个女同事貌似把这一句话运用到了极致。只是好奇,那样活着,心累吗?值得吗?

    左右滑动切换Activity的原理:监控触屏事件和手势事件。在触屏事件处理函数中调用手势事件处理函数,表示用户触屏后是否有手势操作,如果有则进行手势事件处理。

    分四步完成:

    1.继承OnGestureListener(手势监控器)和OnDoubleTapListener(触屏监听器)

      publicclass ViewSnsActivity extends Activity implementsOnTouchListener,OnGestureListener{}

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

     GestureDetector mGestureDetector;//手势监听对象

     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函数

     private int verticalMinDistance=20;

     private int minVelocity=0;

     public boolean onFling(MotionEvent e1,MontionEvent e2,float velocityX, floatvelocityY){

         if(e1.getX()-e2.getX()>verticalMinDistance &&Math.abs(velocityX)>minVelocity)

        //向量的水平长度必须大于verticalMinDistance,并且水平方向速度大于minVelocity 

           {

              //切换Activity

              //Intent intent=new Intent(ViewSnsActivity.this,UpdateStatusActivity.class);

              //startActivity(intent);

             Toast.makeText(this,"向左手势",Toast.LENGTH_SHORT).show();

          }

         else if(e2.getX()-e1.getX()>verticalMinDistance && Math.abs(velocityX)>minVelocity)

         {

            //切换Activity

             Toast.makeText(this,"向右手势",Toast.LENGTH_SHORT).show();

         }

     }

    其中,e1:手势起点的移动事件;e2:当前手势点的移动;velocityX:每秒x轴方向移动的像素;velocityY:每秒y轴方向移动的像素

 

    4.重载onTouch函数

    调用手势的处理函数

   public boolean onTouch(View v, MotionEvent event){

    return mGestureDetector.onTouchEvent(event); 

   }

 

分享: 分享到新浪Qing

喜欢

阅读 评论 收藏 转载 喜欢 打印举报

已投稿到:

排行榜 圈子

加载中,请稍候......

前一篇:Android 基于UDP的socket数据传输(记录)

后一篇:android.os.NetworkOnMainThreadException 异常处理(转)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值