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

标签 java android coordinates android-canvas rect

我正在玩画一些椭圆形以响应触摸,我对触摸给出的坐标感到困惑并将其转换成一些椭圆形,我不知道为什么我在 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/

相关文章:

iphone - (iphone)从 ScrollView 中分离 View 并将其添加到另一个 View 时如何设置view.center?

java - 纯函数可以改变输入值吗?

java - 如何调整按钮数组中按钮的大小

java - 是否可以在 Java 中仅 check out cvsclient 中的目录结构?

java - 在 Android 中,为什么 ArrayList.contains(obj) 总是返回 false?

c++ - 功能: Getting clicked object from QGraphicsScene

c++ - 如何在 Windows 上使用 Qt C++ 从一个地理地址获取纬度/经度?

java - 有没有办法在 Hazelcast 中使用自定义执行程序?

java - 构建失败并显示 'Program type already present: android.arch.core.util.Function' - Firebase 依赖项问题

java - 任务 'app:mergeDebugResource' 执行失败