Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android的RectF坐标与触摸坐标不同吗?_Java_Android_Coordinates_Android Canvas_Rect - Fatal编程技术网

Java Android的RectF坐标与触摸坐标不同吗?

Java Android的RectF坐标与触摸坐标不同吗?,java,android,coordinates,android-canvas,rect,Java,Android,Coordinates,Android Canvas,Rect,我在玩着画一些椭圆来回应触摸,我被触摸给出的坐标弄糊涂了,并把它转换成了一些椭圆,我不知道为什么我在Y中得到了偏移,这是一幅说明我的问题的图像,一段代码和一些输出。 public class TestView extends View implements OnTouchListener { RectF rectf; Paint paint; public TestView(Context context, AttributeSet attrs, int defStyl

我在玩着画一些椭圆来回应触摸,我被触摸给出的坐标弄糊涂了,并把它转换成了一些椭圆,我不知道为什么我在Y中得到了偏移,这是一幅说明我的问题的图像,一段代码和一些输出。

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
任何帮助都将不胜感激

解决

这是标题栏偏移:)我添加了
setTheme(android.R.style.Theme\u Light\u NoTitleBar\u全屏)

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

什么是
Log.d
中的
rect
?这是一个打字错误,是rectf,谢谢,但已经解决了这是我喜欢的方式:)