我正在尝试在onTouch
事件上重绘画布上的图像。我能够在画布上绘制图像,但我希望图像能够在特定的x,y
上重绘。
protected void onDraw(Canvas canvas)
{
mBitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.ab);
mBitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.ab);
this.canvas=canvas;
Paint p = new Paint();
p.setColor(Color.parseColor("#FFFFFF"));
canvas.drawLine(x1, y1, x2 , y2, p);
canvas.drawBitmap(mBitmap1, 70, 60, null);
canvas.drawBitmap(mBitmap1, 185, 60, null);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
final int x=(int)event.getX();
Log.i("***********xPos","="+x);
final int y=(int)event.getY();
Log.i("***********yPos","="+y);
if(event.getAction()==MotionEvent.ACTION_UP)
{
}
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
canvas.drawBitmap(mBitmap1,50+x,60,null );
this.postInvalidate();
}
if(event.getAction()==MotionEvent.ACTION_MOVE)
{
}
return false;
}
答案 0 :(得分:3)
好吧我想我知道你的问题是什么is.you ae调用postinvalidate()方法每次当action.down调用时它调用最终调用ondraw()。好吧它会在位图上重绘它为你的paricaular setted值再次投入
所以你看起来它保持不变。
确定按照以下步骤操作:
1:使用一些公共变量在x和y轴的ondraw方法中绘制位图,让我们说initx和inity
2:比触摸事件:通过将x和y值添加到initx和inity resp来更新此值。
像:INITX = INITX + X; inity这= inity这+ Y; 并且最后在阳离子向下事件中调用post.invalidate或ondraw方法。它会对你有用
答案 1 :(得分:0)
请参阅MotionEvent类,该类提供用户触摸屏幕的位置坐标。