美文网首页android
用户滑动屏幕切换Activity #Android #Velo

用户滑动屏幕切换Activity #Android #Velo

作者: mmmwhy | 来源:发表于2016-10-19 17:12 被阅读68次

我现在非常恨自己手贱选了安卓这门课,作业多的令人发指。不过自己选的课,哭着也要上完。本文主要讲解如何实现 滑动屏幕时切换Activity 更多见:iii.run

VelocityTracker简介

  • android.view.VelocityTracker主要用跟踪触摸屏事件(flinging事件和其他gestures手势事件)的速率。

  • 用addMovement(MotionEvent)函数将Motion event加入到VelocityTracker类实例中。

  • 使用getXVelocity() 或getXVelocity()获得横向和竖向的速率到速率时,但是使用它们之前请先调用computeCurrentVelocity(int)来初始化速率的单位 。

  • 使用recycleVelocityTracker()释放空间,循环使用。

    当你需要跟踪触摸屏事件的速度的时候

使用obtain() 方法来获得 VelocityTracker 类的一个实例对象在onTouchEvent回调函数中,使用addMovement(MotionEvent)函数将当前的移动事件传递给VelocityTracker对象使用computeCurrentVelocity (int units)函数来计算当前的速度,使用 getXVelocity ()、 getYVelocity ()函数来获得当前的速度。

使用VelocityTracker

private void initView(){
        entryLayout = (RelativeLayout)super.findViewById(R.id.entry);
        entryLayout.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                createVelocityTracker(event); //获取实例对象
                switch(event.getAction()){
                    case MotionEvent.ACTION_DOWN: //
                        xDown=event.getX();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        int xSpeed = getScrollVelocity();
                        xMove = event.getRawX();
                        int distanceX1 = (int) (xMove - xDown);
                        int distanceX2 = (int) (xDown-xMove);
                        if ((distanceX1 > XDISTANCE_MIN||distanceX2>XDISTANCE_MIN )&&(xSpeed>XSPEED_MIN)) {
                            openNew();
                        }
                        break;
                    case MotionEvent.ACTION_UP:
                        recycleVelocityTracker();
                }
                return true;
            }
        });
    }

对于 MotionEvent

ACTION_DOWN: 表示用户开始触摸.
ACTION_MOVE: 表示用户在移动(手指或者其他)
ACTION_UP:表示用户抬起了手指
ACTION_CANCEL:表示手势被取消了
ACTION_OUTSIDE: 表示用户触碰超出了正常的UI边界.
ACTION_POINTER_DOWN:有一个非主要的手指按下了.
ACTION_POINTER_UP:一个非主要的手指抬起来了

其余部分代码

private int getScrollVelocity() {//计算移动距离
        mVelocityTracker.computeCurrentVelocity(1000);
        int velocity = (int) mVelocityTracker.getXVelocity();
        return Math.abs(velocity);
    }

    private  void createVelocityTracker(MotionEvent event){
        if(mVelocityTracker == null){
            mVelocityTracker = VelocityTracker.obtain(); //获得VelocityTracker类实例
        }
        mVelocityTracker.addMovement(event);//将事件加入到VelocityTracker类实例中
    }

    private void recycleVelocityTracker(){
        mVelocityTracker.recycle();
        mVelocityTracker = null;
    }

    private void openNew(){
        Intent intent = new Intent(SCOSEntry.this,MainScreen.class);
        Bundle bundle = new Bundle();
        bundle.putString("message","FromEntry");
        intent.putExtras(bundle);
        startActivity(intent);
    }

相关文章

  • 用户滑动屏幕切换Activity #Android #Velo

    我现在非常恨自己手贱选了安卓这门课,作业多的令人发指。不过自己选的课,哭着也要上完。本文主要讲解如何实现 滑动屏幕...

  • day4 Activity相关

    什么是Activity? 与用户交互的接口,提供用户触摸,点击,滑动的界面。Android中的activity全都...

  • activity面试知识

    什么是activity,Android系统中提供给用户完成滑动点击操作的页面。 1、activity的生命周期 2...

  • Android进阶面试题之Activity干货篇

    Activity是什么 Activity是Android四大组件之一,它提供一个界面让用户点击和各种滑动操作,这就...

  • Android Activity使用详解

    Activity 是 Android 系统四大应用组件之一,用户可与 Activity 提供的屏幕进行交互,进行拨...

  • Android Activity标签属性

    Activity 是 Android 系统四大应用组件之一,用户可与 Activity 提供的屏幕进行交互,以执行...

  • Activity

    什么是Activity?android 给用户提供的交互接口,让用户通过界面进行查看、点击、滑动等一系列活动。 A...

  • Android基础之四大组件

    1.Activity Android程序与用户交互的窗口 一个Activity通常就是一个屏幕窗口 Activit...

  • Activity面试详解

    1、什么是Activity? Android是与用户交互的接口,它提供了一个界面,供用户去点击、滑动等操作。 2、...

  • Activity滑动切换动画

    利用位移动画,实现activity跳转时,新的activity从右边进入,activity退出时从右边消失,类似微...

网友评论

    本文标题:用户滑动屏幕切换Activity #Android #Velo

    本文链接:https://www.haomeiwen.com/subject/stmxuttx.html