Android:可拖动吐司,还是另类?

时间:2010-12-14 11:54:16

标签: android toast

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

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

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

我不知道有什么其他方法可以实现这一点,我非常感谢社区的建议。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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);
  }
}