Android: Draggable Toast или Альтернатива?
Вопрос
Я рисую ряд растровых изображений на холсте, и используя MotionEvents, чтобы позволить мне перетащить их вокруг.
Когда каждый элемент нажимается, я хотел бы отобразить тост или тостообразную мини-информационную панель, которая отслеживает движение растрового изображения во время Action_Move. «Тост» появится на Action_Down и исчезнет на Action_up.
Проблема с использованием тоста состоит в том, что я должен дать его длительностью, и, также не могу изменить свою позицию, как только оно будет отображаться. Если я не могу убить тост для каждого Action_Move, и отобразите новый сразу у текущих координат? (Извините, думая вслух в этот момент, не могу добраться до моей машины Dev, чтобы проверить ...)
Я не знаю, какие другие варианты могут достичь этого, и я очень ценю предсказывания от сообщества.
Решение
Надеюсь, это поможет, просто взбито, может даже компилировать!
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);
}
}
Другие советы
Тост не подходит в этом случае по причинам, которые вы уже упоминали. Лучше будет определить регион на холсте и нарисовать строку сообщения там, используя RoodText. Поместите это в метод OnDaraw и позвоните в недействителен, когда вам нужно обновить текст или положение платы сообщений.