Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 在手指所在的地方画矩形?_Java_Android_Xml_Algorithm_Canvas - Fatal编程技术网

Java 在手指所在的地方画矩形?

Java 在手指所在的地方画矩形?,java,android,xml,algorithm,canvas,Java,Android,Xml,Algorithm,Canvas,我试图在屏幕右侧的Android画布上沿手指画一个矩形: (仔细看,看到那个红点了吗?我想让那个红点出现在我点击的X轴的屏幕一侧) 我已将屏幕划分为100x100网格: gridSizePx_w = width/100; gridSizePx_h = height/100; 我在这里画了红方块: public void drawInitialBullet(float x) { SurfaceHolder holder = getHolder(); if(ho

我试图在屏幕右侧的Android画布上沿手指画一个矩形:

(仔细看,看到那个红点了吗?我想让那个红点出现在我点击的X轴的屏幕一侧)

我已将屏幕划分为100x100网格:

gridSizePx_w = width/100;
gridSizePx_h = height/100;
我在这里画了红方块:

 public void drawInitialBullet(float x) {
        SurfaceHolder holder = getHolder();

        if(holder.getSurface().isValid()) {
             Canvas screenCanvas = holder.lockCanvas();


            Paint paint = new Paint();
            paint.setColor(Color.RED);

            screenCanvas.drawRect(width-gridSizePx_w, ((int) x)-gridSizePx_w, width, ((int) x) + gridSizePx_h, paint );
            holder.unlockCanvasAndPost(screenCanvas);
        }
    }
在这里获得接触活动后:

  @Override
    public boolean onTouchEvent(MotionEvent motionEvent) {
        if(motionEvent.getAction() == MotionEvent.ACTION_UP){

                 drawInitialBullet(motionEvent.getX());

            Toast.makeText(myContext, "YEAH", Toast.LENGTH_LONG);
                }

        return true;
    }
然而,由于某些原因,正方形从不会沿着正确的X轴出现,它总是沿着屏幕的一侧随机出现,与我点击的位置无关


如果您注意到我的代码中有任何问题,请告诉我。

宽度是多少?这里没有显示定义它的代码。如果没有这一点,就很难知道你实际上在画什么。所以,你的顶级参数-((int)x)-gridSizePx\u w x是什么?这不应该是_h,不是_w?@gabeschen x是从我的触控事件中生成的,这时我像这样调用方法:
drawInitialBullet(motionEvent.getX())
@gabeschen我使用
width=point.x获得屏幕的宽度;高度=点y使用
Display screen=getWindowManager().getDefaultDisplay()从另一个类获取点;点p=新点();屏幕大小(p)那么你的顶层计算是完全错误的。您正在x位置更改矩形的顶部。您希望基于y来更改它。这将显示在屏幕右侧,与你的手指相对,我认为你正试图这样做