0

我在画布上绘制了许多位图,并使用 MotionEvents 让我拖动它们。

当每个项目被按下时,我想显示一个 Toast 或类似 Toast 的迷你信息面板,它跟踪在 ACTION_MOVE 期间被拖动的位图的移动。“Toast”将出现在 ACTION_DOWN 上,并在 ACTION_UP 上消失。

使用 Toast 的问题是我必须给它一个持续时间,而且,一旦它显示出来,我就不能改变它的位置。除非我可以为每个 ACTION_MOVE 杀死 Toast,并立即在当前坐标处显示一个新的?(抱歉,此时大声思考,无法到达我的开发机器进行测试......)

我不知道还有什么其他选择可以实现这一目标,我非常感谢社区的建议。

4

2 回答 2

1

由于您已经提到的原因,吐司在这种情况下不适合。最好在 Canvas 上定义一个区域并使用 drawText 在那里绘制消息字符串。将它放在 onDraw 方法中,并在需要更新文本或留言板位置时调用 invalidate。

于 2010-12-14T11:58:29.923 回答
1

希望这会有所帮助,只是把它搅起来,甚至可以编译!

private boolean mDragging = false;
private float mTouchX = 0, mTouchY = 0;
private Paint mTextPaint = new Paint();//need to set this up in onCreate!

public boolean onTouchEvent(MotionEvent event)
{
  mTouchX = event.getX();
  mTouchY = event.getY();

  if(event.getAction() == ACTION_DOWN)
  {
    mDragging = true;
  }
  else if(event.getAction() == ACTION_UP)
  {
    mDragging = false;
  }

  return true;
}

protected void onDraw (Canvas canvas)
{
  /* Put all your bitmap drawing here. */

  /* Draw some info text on top of everything else. */
  if(mDragging)
  {
    String text = mTouchX + ", " + mTouchY;
    canvas.drawText(mTouchX, mTouchY + 50, text, mTextPaint);
  }
}
于 2010-12-14T16:34:49.920 回答