gpt4 book ai didi

java - Android RectF 坐标与触摸坐标不同吗?

转载 作者:行者123 更新时间:2023-11-29 05:35:56 25 4
gpt4 key购买 nike

我正在玩画一些椭圆形以响应触摸,我对触摸给出的坐标感到困惑并将其转换成一些椭圆形,我不知道为什么我在 Y 上有偏移,这里有一张图片可以说明我的问题,一段代码和一些输出。

enter image description here

public class TestView extends View implements OnTouchListener
{
RectF rectf;
Paint paint;

public TestView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
paint = new Paint();
rectf = new RectF();
rectf.set(30, 80, 80, 30);
this.setOnTouchListener(this);
}

@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.save();
canvas.drawOval(rectf, paint);
canvas.restore();
}
@Override
public boolean onTouch(View v, MotionEvent event)
{
float x=event.getRawX();
float y=event.getRawY();
rectf.set(x-2, y+2, x+2, y-2);
Log.v("", "****************");
Log.v("x "+x, "y "+y);
Log.v("rect", rectf.left +" " + rectf.right +" " +rectf.top +" " +rectf.bottom);
Log.v("center", rectf.centerX()+" "+rectf.centerY());
invalidate();//
return true;
}
}

输出

 "****************
x 211.0: y 560.0
rect: 209.0 213.0 562.0 558.0
center: 211.0 560.0
:****************
x 220.0: y 547.0
rect: 218.0 222.0 549.0 545.0
center: 220.0 547.0

任何帮助将不胜感激

最佳答案

如果出于某种原因你想再次显示标题栏,那么你需要获取 View Canvas 区域而不是整个屏幕的 X 和 Y 坐标。

您应该使用 event.getX() 和 .getY() 而不是 .getRawX() 和 .getRawY()。

关于java - Android RectF 坐标与触摸坐标不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19535687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com