У меня есть активность с несколькими страницами, каждая из которых содержит ListView. Я использую адаптер для настраиваемых элементов списка. Каждый элемент анимируется в списке:Анимация элементов списка с анимацией
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null) {
v = inflater.inflate(R.layout.list_item, null);
doTheThing = true;
}
//Some random code here
if(doTheThing) {
Animation animation = AnimationUtils.loadAnimation(a, R.anim.list_item_animation);
animation.setStartOffset(i * 60 + 200);
v.startAnimation(animation);
}
return v;
}
С этой установкой у меня есть две проблемы. Первый заключается в том, что при прокрутке более двух страниц влево или вправо анимация повторяется, она должна запускаться только при первом открытии активности. Вторая проблема заключается в том, что, если я быстро прокручиваю список, есть некоторые элементы, отсутствующие в ocasinally, а затем они оживают обратно. Это всегда случайное, и когда все они загружены, это не повторится.
Как я могу это исправить?
Спасибо за идею, я попробовал ее, установив переменную 'static long' в действие, которое содержит ListViews с' (new Date()). getTime() ', а затем проверяя эту переменную в ListAdapter, сравнивая ее с текущим временем. Если различие больше 1000 (это нормально для того, что мне нужно), анимация не выполняется. В Activity, который содержит все, я также использовал putLong() и getLong(), чтобы перенести время начала, если активность перезапущена (например, при изменении ориентации экрана. – Squeazer
Не имеет отношения к этому вопросу в некотором смысле ... но вы должны избегайте создания объектов, которые вам не нужны (новая дата() ...). System.currentTimeMillis() выполнит то же самое. –