Java 在手指所在的地方画矩形?
我试图在屏幕右侧的Android画布上沿手指画一个矩形: (仔细看,看到那个红点了吗?我想让那个红点出现在我点击的X轴的屏幕一侧) 我已将屏幕划分为100x100网格: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
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来更改它。这将显示在屏幕右侧,与你的手指相对,我认为你正试图这样做