用户滑动时的矩形形状移动

终端

我正在向屏幕绘制一个 Rect,并尝试在用户向某个方向滑动时将其向上/向右/向下/向左移动。当用户向上滑动时,我希望矩形向上移动 50 像素,并且所有四个方向都相同。

我有滑动检测工作,但是我不知道如何实际移动矩形。我怎样才能在用户滑动的方向上移动 Rect r ?理想情况下,如果可能的话,我希望它能够在一个方向上平滑移动,而不仅仅是在滑动方向上捕捉 50px。

我目前拥有的:

主活动.java

public class MainActivity extends Activity {

    float x1,x2;
    float y1, y2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        View v = new GameView(this);
        setContentView(v);
    }

    public boolean onTouchEvent(MotionEvent touchevent) {
        switch (touchevent.getAction())
        {
            case MotionEvent.ACTION_DOWN:
            {
                x1 = touchevent.getX();
                y1 = touchevent.getY();
                break;
            }
            case MotionEvent.ACTION_UP:
            {
                x2 = touchevent.getX();
                y2 = touchevent.getY();

                double r = Math.atan2(y2 - y1, x2 - x1);

                if (r > -2.25 && r < -0.75) {
                    Toast.makeText(getApplicationContext(), "Up", Toast.LENGTH_SHORT).show();
                    //Move rect 50px up
                } else if (r > -0.75 && r < 0.75) {
                    Toast.makeText(getApplicationContext(), "Right", Toast.LENGTH_SHORT).show();
                    //Move rect 50px right
                } else if (r > 0.75 && r < 2.25) {
                    Toast.makeText(getApplicationContext(), "Down", Toast.LENGTH_SHORT).show();
                    //Move rect 50px down
                } else if (r > 2.25 || r < -2.25) {
                    Toast.makeText(getApplicationContext(), "Left", Toast.LENGTH_SHORT).show();
                    //Move rect 50px Left
                }
                break;
            }
        }
        return false;
    }
}

我在 GameView.java 中创建 Rect

public class GameView extends View {

    public Rect r = new Rect(100, 100, 300, 300);
    public Paint p = new Paint();

    public GameView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE);
    
        //Fill
        p.setStyle(Paint.Style.FILL);
        p.setColor(Color.MAGENTA);
        canvas.drawRect(r, p);
    }
}
终端

我设法自己弄明白了。我最终使用 .offsetTo(int newX, int newY) 将矩形移动到新位置,同时保持它的 Width 和 Height 属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当用户在Excel(VBA)中向右滚动时移动形状

来自分类Dev

移动旋转矩形时的跳跃效果

来自分类Dev

释放移动键时如何使矩形停止?

来自分类Dev

移动旋转矩形时的跳跃效果

来自分类Dev

当CarouselPage包含ListView时,如何让用户滑动?

来自分类Dev

当用户向后滑动时popToRootViewControllerAnimated

来自分类Dev

缩放时传单形状会移动

来自分类Dev

createjs:单击时形状神秘地移动

来自分类Dev

移动形状时如何让线或路径跟随形状

来自分类Dev

在Android的ListView中滑动时,视图前后移动

来自分类Dev

如何在UIPageViewContoller中滑动时移动UIImageView

来自分类Dev

Java:在单击按钮时将矩形形状更改为其他形状

来自分类Dev

在Android中从矩形形状按下按钮时,按钮已更改为其原始形状吗?

来自分类Dev

以矩形形状排列粒子

来自分类Dev

TabLayout中的片段仅在用户滑动Android时加载

来自分类Dev

当用户滑动时可反++的基本应用

来自分类Dev

当用户在滚动视图内滑动时关闭键盘

来自分类Dev

在实现Runnable的Java中使用线程时形状不移动

来自分类Dev

用户滚动时移动图像或元素

来自分类Dev

用户选择时的移动重定向

来自分类Dev

用户输入文本时摆动的GUI移动

来自分类Dev

使用角度移动矩形

来自分类Dev

如何移动相交的矩形?

来自分类Dev

在Pygame中移动矩形

来自分类Dev

移动绘制的矩形

来自分类Dev

pygame按键移动矩形

来自分类Dev

调整形状宽度时,旋转的形状在y轴上移动

来自分类Dev

在使用C ++的OpenGL中移动形状时按时间自动旋转形状

来自分类Dev

矩形状态仅在单击 PyQt5 QML 时更改