创建时如何在线性布局内绘制和移动位图

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()方法