Я знаю, что представление не будет обновляться сразу же после того, как я просто позвоню view.setTranslationY (-10.0f), пока основной поток не вернется в цикл ожидания.Как я могу уловить время пользовательского интерфейса, которое обновляется после вызова setTranslationY?
Я хотел бы сделать снимок экрана сразу после того, как был обновлен вид, но я не нашел обратный вызов, например «onTranslationFinished()» или «setOnTranslationEnd()», чтобы дать мне шанс сделать это.
Сначала я сделал как следующий код и он действительно работал:
view.setTranslationY(-10.0f);
view.post(new Runnerable() {
@Override
void run() {
takeScreenshot();
});
Но когда мой телефон достигает ограничения памяти, и она медленно работает, метод не работает, как все мои ожидания. takeScreenshot() выполняется перед просмотром, фактически переведенным -10.0f. Я знаю, что postDelayed (100ms) может решить проблему временно, но это не лучшее решение.
Есть ли способ удовлетворить мое требование?
Спасибо за ваш комментарий, но он не работает. – Keith
Я попытался установить точку останова onDraw и распечатать журнал. К сожалению, onDraw даже не называется вообще. Перевод может не вызвать перерисовку. – Keith
На самом деле это будет называться. Проверьте файл app.gradle, 'minSdkVersion' должен быть как минимум' 16', иначе он не будет возвращен. @Keith –