У меня есть 4 TextViews
. Они все начинают невидимым, и я оживляю их на экране (скольжение снизу). Я запускаю нить для анимации каждого из них, начиная 200 миллисекунд друг за другом. Проблема заключается в следующем: ПЕРВЫЙ момент, когда я аниматирую TextViews после запуска активности, они отстают. Но если я потом снова их оживу, они этого не сделают. А изредка они будут случайным образом отставать, но это не очень часто. Мне просто интересно, есть ли способ предотвратить это. Я тестировал только на одном телефоне, так что это может быть так, но это странно, что это происходит только в первой анимации после запуска этой операции.Анимация (изредка) laggy
animatingGroup = 0;
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
public void run() {
while (animate) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.post(new Runnable() {
public void run() {
Animation slideInAnim = AnimationUtils
.loadAnimation(getApplicationContext(),
R.anim.slide_in_from_bottom);
switch (animatingGroup) {
case 1:
tv1.startAnimation(slideInAnim);
tv1.setVisibility(View.VISIBLE);
break;
case 2:
tv2.startAnimation(slideInAnim);
tv2.setVisibility(View.VISIBLE);
break;
case 3:
tv3.startAnimation(slideInAnim);
tv3.setVisibility(View.VISIBLE);
break;
case 4:
tv4.startAnimation(slideInAnim);
tv4.setVisibility(View.VISIBLE);
animate = false;
break;
}
animatingGroup++;
}
});
}
}
};
new Thread(runnable).start();
и вот анимация:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="800"
android:toYDelta="0%"
android:fromYDelta="100%p" />
</set>
Использовать handler.postdelayed() вместо thread.sleep и где находится этот код? также удалите свою нить и используйте runnable вместо этого. –