Android 沿滑动方向的视图动画?

Android 沿滑动方向的视图动画?,android,gesture-recognition,Android,Gesture Recognition,目前,我已经完成了上述工作,在三个区域中的每一个区域中滑动都将是一个XML动画,在我离开屏幕之前将沿着该方向移动,但是: 预定义的路线,无论手指在何处滑动,它都将笔直行进 在中间和侧面侧击区域之间有侧击死区 我正在寻找一种方法,通过遵循实际的滑动方向来改进滑动检测,并使运动更逼真 public abstract class OnUpDownGestureListener implements OnTouchListener { private Context context;

目前,我已经完成了上述工作,在三个区域中的每一个区域中滑动都将是一个XML动画,在我离开屏幕之前将沿着该方向移动,但是:

  • 预定义的路线,无论手指在何处滑动,它都将笔直行进

  • 在中间和侧面侧击区域之间有侧击死区

  • 我正在寻找一种方法,通过遵循实际的滑动方向来改进滑动检测,并使运动更逼真

    public abstract class OnUpDownGestureListener implements OnTouchListener {
    
        private Context context;
    
        private final GestureDetector gdt = new GestureDetector(this.context, new GestureListener());
    
        @Override
        public boolean onTouch(final View v, final MotionEvent event) {
            gdt.onTouchEvent(event);
            return true;
        }
    
        private final class GestureListener extends SimpleOnGestureListener {
    
            @Override
            public boolean onSingleTapConfirmed(MotionEvent e) {
                click();
                return true;
            }
    
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    
                float x1 = e1.getX();
                float y1 = e1.getY();
    
                float x2 = e2.getX();
                float y2 = e2.getY();
    
                if (y1 - y2 > 120 && Math.abs(velocityY) > 200) {
                    onBottomToTop(); // Bottom to top
                } else if (y2 - y1 > 120 && Math.abs(velocityY) > 200) {
                    return false; // Top to bottom
                }
    
                /**
                 * bottom right to left top
                 */
                if (x1 - x2 > 120 && x1 > x2 && y1 - y2 > 120 && y1 > y2) {
                    onBottomRightToLeftTop();
    
                }
                /**
                 * left top corner to right
                 */
                else if (x2 - x1 > 120 && x2 > x1 && y2 - y1 > 120 && y2 > y1) {
                    // onTopLeftToBottomRight();
                }
                /**
                 * left bottom corner to right up
                 */
                else if (x2 - x1 > 120 && x2 > x1 && y1 - y2 > 120 && y1 > y2) {
                    onBottomLeftToRightTop();
                }
    
                /**
                 * Right corner to left bottom down
                 */
                else if (x1 > x2 && y2 > y1) {
                    onTopRightToBottomLeft();
                }
                return false;
            }
        }
    
        public abstract void click();
    
        public abstract void onBottomRightToLeftTop();
    
        public abstract void onTopLeftToBottomRight();
    
        public abstract void onTopRightToBottomLeft();
    
        public abstract void onBottomLeftToRightTop();
    
        public abstract void onBottomToTop();
    
    }
    

    当你有一个投掷的细节,然后你可以得到所有的细节动画,角速度x,y等。那么为什么你想限制它的动画,以某些“隧道”-你认为它只能通过XML动画吗?另外,因为它已经很老了,你能不能也发布一些关于你如何解决/处理这个问题的最新消息。@Lukasz'Severiaan'Grela这是我的想法,不幸的是,我无法找到一种方法,在不预先设置动画的情况下,根据动画是否在这些隧道中设置动画!谷歌?可能有点帮助:)第一个链接似乎正是我正在做的,我将研究第二个。