Кадровая анимация Android в адаптере - PullRequest
1 голос
/ 15 марта 2011

Я недавно пытался заставить работать анимацию кадров.

Я пробежался по неверному примеру документации, и он работает в примере приложения с помощью onWindowFocusChanged для реализации метода запуска.

Моя проблема сейчас заключается в том, что я хочу использовать его в представлении, управляемом getView в адаптере массива.

Должно ли это быть возможным?

е

public View getView(int position, View convertView, ViewGroup parent)
{
    ImageView myImage =(ImageView)proximityView.findViewById(R.id.imgUserImage);


         myImage.setBackgroundResource(R.drawable.animation);
         AnimationDrawable frameAnimation = (AnimationDrawable) myImage.getBackground();
         frameAnimation.start();

}

Ответы [ 2 ]

2 голосов
/ 23 ноября 2011

Помогло размещение функции запуска в отдельном исполняемом модуле, хотя я все еще не гарантировал, что она будет работать во всех случаях. Попробуйте сначала.

    View v = convertView;
    final ImageView downloadButton = (ImageView) v.findViewById(R.id.imageview);
    downloadButton.setBackgroundResource(R.anim.your_animation);
    AnimationDrawable spinningImage = ((AnimationDrawable)downloadButton.getBackground());
    downloadButton.post(new Runnable() {   
            @Override
            public void run() {
                    AnimationDrawable spinningImage = ((AnimationDrawable)
                    downloadButton.getBackground());
                    spinningImage.start();
                    }
            });

EDIT

Кроме того, поскольку это в ListAdapter, проблема может заключаться в том, что ваш ListView не делает недействительными его дочерние элементы. В своей основной деятельности попробуйте запустить:

    _listView.post(new Runnable(){
            public void run(){
                    _listView.invalidateViews();
                    }
            });

Когда вы хотите обновить содержимое. Также возможно отключить ваши кеши.

    _listView.setAnimationCacheEnabled(false);
    _listView.setDrawingCacheEnabled(false);
1 голос
/ 07 августа 2012

У меня есть списки в View Pager, и я обнаружил, что анимация запускается только после того, как список получит фокус (например, нажмите). Решение, которое я нашел, чтобы получить это:

listView.requestFocus();
...