У меня проблемы с перерисовкой вида в приложении для рисования. Когда касание заканчивается, я вызываю touch_up (), чтобы создать путь, invalidate (), чтобы нарисовать его, и storeView (), чтобы поместить текущий вид в стек. Тем не менее, представление не перерисовывается вообще (до следующего касания, что дает ему раздражительный эффект). Если я удаляю вызов storeView (), он сразу перерисовывается.
Я понимаю из здесь , что проблема недействительна () не обязательно возникает немедленно, и я думаю, что мне нужно создать новый поток или обработчик, чтобы ждать ее. Несмотря на то, что я читаю страницы разработчиков, я не совсем понимаю, как это реализовать.
Это действительно то, что мне нужно сделать? Как я могу заставить storeView () ждать, пока представление не будет перерисовано? Я боролся с этим некоторое время, ответ сделал бы мой день. Спасибо!
Вот что я сейчас делаю.
Action_up:
case MotionEvent.ACTION_UP:
touch_up();
invalidate();
storeView();
break;
Touch_up:
private void touch_up() {
mPath.lineTo(mX, mY);
// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);
// kill this so we don't double draw
mPath.reset();
}
storeView:
public void storeView(){
historyCount++;
if(historyCount > historySize) historyCount = 6; //We don't want more than 6
history.add(Bitmap.createBitmap(myView.getDrawingCache()),historyCount);
}