Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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 OnTouchEvent isn';我不知道drawRect在哪里_Java_Android - Fatal编程技术网

Java OnTouchEvent isn';我不知道drawRect在哪里

Java OnTouchEvent isn';我不知道drawRect在哪里,java,android,Java,Android,我有一个Rect对象,我使用drawRect(Rect,Paint)绘制它。我有一个OnTouchEvent检查触摸位置是否在直肠内。如果触摸在Rect内,则屏幕上的某些内容会发生变化。 我遇到的问题是:我必须触摸才能执行on-touch语句的位置比Rect对象高出大约50像素 以下是我的代码的相关部分: public class MainActivity extends Activity { DrawView drawView; RelativeLayout fLY;

我有一个Rect对象,我使用drawRect(Rect,Paint)绘制它。我有一个OnTouchEvent检查触摸位置是否在直肠内。如果触摸在Rect内,则屏幕上的某些内容会发生变化。 我遇到的问题是:我必须触摸才能执行on-touch语句的位置比Rect对象高出大约50像素

以下是我的代码的相关部分:

public class MainActivity extends Activity {
    DrawView drawView;
    RelativeLayout fLY;
    static Rect newGame = new Rect(LEFT, 165 + 35, 320, 200 + 35);

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        fLY = new RelativeLayout(this);
        drawView = new DrawView(this);
        fLY.addView(drawView);
        setContentView(fLY);
    }

    @Override
   public boolean onTouchEvent(MotionEvent event) {
        int touchX = (int)event.getX();
        int touchY = (int)event.getY();
        switch(event.getAction()){
            case MotionEvent.ACTION_DOWN:
            if(newGame.contains(touchX, touchY))reset();
        }
    }
还有我的DrawView课程:

public class DrawView extends View{
    Paint paint = new Paint();
    int COLORS[] = Constants.COLORS;
    int left = 250;
    int size = 35;

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

    @Override
    public void onDraw(Canvas canvas) {
        canvas.drawRect(MainActivity.newGame, paint);
    }
 }

它可能正好与状态栏的高度相同。您可以通过以下答案获得状态栏的高度:


然后将其添加到您的
getY
中,它应该会工作。

状态栏和/或标题栏的高度是问题所在。但是当我在你的链接中运行代码时,它说状态和标题栏高度等于零,所以我无法通过抵消触摸屏上的YPO来解决我的问题。我将代码放在onCreate方法的末尾。我已经通过删除标题栏和状态栏暂时解决了这个问题。