如何正确动画视图幻灯片UP&在onFling活动后滑下来?

时间:2018-02-09 13:45:18

标签: android animation view onfling yaxis

我花了几个小时尝试动画​​视图向上滑动,根据手指方向向下滑动。我可以在自定义视图上触发onFling事件,并使用

获取手指移动的方向
 @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        Logger.d("onFling "+ velocityY);
        if(e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE) {
            Logger.d("Bottom to top");
            slideView(velocityY, e1, e2, Constants.Global.MOVE_BOTTOM_TOP);
            return false; // Bottom to top
        }  else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE) {
            Logger.d("Top to bottom");
            slideView(velocityY, e1, e2, Constants.Global.MOVE_TOP_BOTTOM);
            return false; // Top to bottom
        }

        return false;
    }

我尝试使用FlingAnimation进行动画播放:

 FlingAnimation flingAnimation = new FlingAnimation(viewGroup, DynamicAnimation.TRANSLATION_Y); // moves the view on the x-axis
        // derive the pixelPerSecond with start velocity value
        float pixelPerSecond = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, motionEvent1.getY(), getResources().getDisplayMetrics());
        flingAnimation
            .setStartVelocity(pixelPerSecond)
            .setMinValue(motionEvent1.getRawY())
            .setMaxValue(toYDelta)
            .setFriction(0.8f)
            .start();

或使用以下库中的TranslateAnimationSlideOutUpAnimatorhttps://github.com/daimajia/AndroidViewAnimations

不幸的是,视图的滑动动画仍然无法正常工作。

可以使用onScroll事件中的处理将视图定位在Y轴上:

@Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        Logger.d("onScroll distanceX: "+distanceX+" distanceY: "+distanceY);
        params.y = initialY + (int) (e2.getRawY() - initialTouchY);
        params.x = 0;
        windowManager.updateViewLayout(view, params);
        return false;
    }

OnScroll 定位效果很好,但我仍有问题要将幻灯片设置为底部或顶部。我认为这是基于根视图的错误处理,也应该定位。

对于视图上有动画效果的人是否可以提供一些示例,如何以正确的方式在Y轴上滑动动画,请?

非常感谢您的任何建议。

0 个答案:

没有答案