创建时如何在线性布局内绘制和移动位图
How to draw and move bitmap inside of linearlayout when this was created
我希望我的位图在我点击它并在棋盘上四处移动时移动。到目前为止我使用的代码是这样的:
LinearLayout ll = (LinearLayout) findViewById(R.id.table);
ll.setWillNotDraw(false);
ll.setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility") @Override
public boolean onTouch(View arg0, MotionEvent event) {
//gesture detector to detect swipe.
int x = (int) event.getX();
int y = (int) event.getY();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
X=x; Y=y;
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
ll.setBackground(new BitmapDrawable(getResources(), bg)
{
@Override
public void draw(Canvas canvas) {
canvas.drawBitmap(bitmap,X,Y, null);
}
});
在MOVE 的情况下,我放置了位图新位置的新X 和Y。
我以为 draw() 一直在画画。
在 draw() 内部,我绘制了更多位图,但它们是固定的。
我能做什么?
我接受结构的改变,但我更愿意继续这段代码。
谢谢。
尝试创建一个 class extends View
,覆盖 onDraw(Canvas canvas)
,然后改用 matrix.postTranslate(x, y)
和 canvas.drawbBitamp(bitmap, matrix, null)
。
而当你需要刷新视图时,使用invalidate()
方法
我希望我的位图在我点击它并在棋盘上四处移动时移动。到目前为止我使用的代码是这样的:
LinearLayout ll = (LinearLayout) findViewById(R.id.table);
ll.setWillNotDraw(false);
ll.setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility") @Override
public boolean onTouch(View arg0, MotionEvent event) {
//gesture detector to detect swipe.
int x = (int) event.getX();
int y = (int) event.getY();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
X=x; Y=y;
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
ll.setBackground(new BitmapDrawable(getResources(), bg)
{
@Override
public void draw(Canvas canvas) {
canvas.drawBitmap(bitmap,X,Y, null);
}
});
在MOVE 的情况下,我放置了位图新位置的新X 和Y。 我以为 draw() 一直在画画。 在 draw() 内部,我绘制了更多位图,但它们是固定的。
我能做什么? 我接受结构的改变,但我更愿意继续这段代码。 谢谢。
尝试创建一个 class extends View
,覆盖 onDraw(Canvas canvas)
,然后改用 matrix.postTranslate(x, y)
和 canvas.drawbBitamp(bitmap, matrix, null)
。
而当你需要刷新视图时,使用invalidate()
方法