在视图上移动、旋转和缩放 in\out

move, rotation and zoom in\out on View

我是 android 开发的新手,我需要根据一些规范开发视图

  1. 触摸移动
  2. 双指缩放(缩放in\out)
  3. 用两个手指旋转

我通过这些步骤开发了旋转here,但是如果突然移开一根手指,会出现一些问题,例如跳转视图。

并且对于使用此代码的移动,它运行良好,但认为它在突然移动时会出现问题。

 public static View.OnTouchListener getTouchListener(){
    View.OnTouchListener onTouchListener = new View.OnTouchListener() {
        int prevX, prevY;
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            final ConstraintLayout.LayoutParams par = (ConstraintLayout.LayoutParams) v.getLayoutParams();
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN: {
                    v.bringToFront();
                    prevX = (int) event.getRawX();
                    prevY = (int) event.getRawY();
                    par.bottomMargin = -8 * v.getHeight();
                    par.rightMargin = -8 * v.getWidth();
                    v.setLayoutParams(par);
                    return true;
                }
                case MotionEvent.ACTION_MOVE: {
                    par.topMargin += (int) event.getRawY() - prevY;
                    prevY = (int) event.getRawY();
                    par.leftMargin += (int) event.getRawX() - prevX;
                    prevX = (int) event.getRawX();
                    v.setLayoutParams(par);
                    return true;
                }
            }
            return false;
        }
    };
    return onTouchListener;
}

我需要有人帮我把这三个功能放在一起,没有任何问题 提示:如果有图书馆欢迎。

经过长时间搜索如何实现类似的东西,我终于在 GitHub 上找到了一个存储库来解决我的问题 你可以找到 类 这样做 here

使用 类 的方法是:

        yourView.setOnTouchListener(new MultiTouchListener());

通过这种方式,您可以缩放、缩放 in/out(通过捏合)以及通过捏合来旋转视图。

这里是您搜索内容的完美示例:see here(example)

编码愉快!