Анимировать определенные элементы ListView - PullRequest
5 голосов
/ 15 марта 2012

Моя цель - анимировать некоторые ListView элементы, не беспокоясь о getView смешивании с анимацией, заменяя элементы списка новыми надутыми в пользовательском ArrayAdapter.

Если я использую convertView, чтобы избежать раздувания новых элементов, порядок анимации меняется случайным образом.

Кэширование представлений вручную работает нормально, но я сомневаюсь, что это хорошее решение. Лучшие идеи?

1 Ответ

4 голосов
/ 24 апреля 2012

Что я делаю, это устанавливаю анимацию в конвертируемом виде, а затем останавливаю анимацию в каждом конвертируемом виде.Таким образом, анимация останавливается, а затем воспроизводится, если новообращенное представление и продолжается до конца, если оно не было переработано до его завершения.так что это будет частично псевдокод.

В вашем адаптере вы увидите что-то вроде следующего:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final ViewHolder holder;

    if(convertView == null) {
        // setup holder
        holder = new ViewHolder();

        LayoutInflater Inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = Inflater.inflate(mResourceId, null);

        holder.image = (ImageView) convertView.findViewById(R.id.row_image);
        holder.headline = (TextView) convertView.findViewById(R.id.row_headline);

        convertView.setTag(holder);
    } else {
        // get existing row view
        holder = (ViewHolder) convertView.getTag();
    }
    // GetView is only called on new items 
    // so now we stop the previous animation and start a new
    holder.animation.stop();  // First you stop the animation
    holder.animation = new animation();  // then you create new
    holder.animation.start();  // then you start the animation.
...