2015-05-27 3 views
0

я хочу использовать анимации Drawable в моем списке, но когда я начала listActivity он вылетает я узнал от this , когда я удалить эту 2 анимацию кодувытяжка анимации не работает

AnimationDrawable frameAnimation = (AnimationDrawable) GamePic.getBackground(); 
     frameAnimation.start(); 

, это работает анимированный сам по себе в моем телефоне (p7 с Android 4.4), но в других телефонах, которые я пробовал (asus memopad 7, sony c), он работает без анимационных чертежей! внимательно, когда я использую эти коды, все телефоны просто выходят из строя. ниже - мой код для компиляции, что не так?

public class MyList extends ListActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.games_list); 

    setListAdapter(new AA()); 
} 


@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 

    Toast.makeText(MyList.this, "item" + position + "is clicked", Toast.LENGTH_SHORT).show(); 

} 


class AA extends ArrayAdapter<String> { 

    public AA() { 
     super(MyList.this, R.layout.games_list_layout, Resources2.GameListArray); 
    } 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View row = convertView; 
     if (row == null) { 
      LayoutInflater inflater = getLayoutInflater(); 
      row = inflater.inflate(R.layout.games_list_layout, parent, false); 
     } 
     TextView GameName = (TextView) row.findViewById(R.id.textView1); 
     ImageView GamePic = (ImageView) row.findViewById(R.id.imageView2); 
     ImageView Cartridge = (ImageView) row.findViewById(R.id.imageView1); 

     GameName.setText(Resources2.GameListArray[position]); 
     GamePic.setImageResource(Resources2.GamePicArray[position]); 
     Cartridge.setImageResource(Resources2.CartridgeFrame[Resources2.cartridgeColor[position]]); 

     AnimationDrawable frameAnimation = (AnimationDrawable) GamePic.getBackground(); 
     frameAnimation.start(); 

     return row; 

    } 
} 

} 

благодаря

+0

можете ли вы опубликовать снимок экрана, что вы на самом деле хотите? – Sajidkhan

+0

animatedDrawable похож на .GIF-изображения, я хочу его производительность, но в большинстве случаев я вижу, как производительность JPG о фото в моем списке – roz

+0

, если вы используете GIF-изображения, затем переходите через Movie Class, – Sajidkhan

ответ

0

Я нашел свою проблему!

Я использовал GamePic.setImageResource (Resources2.GamePicArray [position]);

, но я должен использовать

GamePic.setBackgroundResource(Resources2.GamePicArray[position]); 

теперь работает отлично!

0

Как documentation описывает, вы должны ждать, пока View не прикреплен к окну перед началом анимации. Поэтому вы должны добавить OnAttachStateChangeListener в представление, которое будет выполняться, когда оно было прикреплено, и начать анимацию оттуда.

ImageView img = (ImageView)v.findViewById(R.id.image); 
img.setBackgroundResource(R.drawable.anim); 
img.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { 
    @Override 
    public void onViewAttachedToWindow(View v) { 
    AnimationDrawable animation = (AnimationDrawable) v.getBackground(); 
    animation .start(); 
    } 

@Override 
public void onViewDetachedFromWindow(View v) { 
} 
}); 

ИЛИ Используйте класс фильма, если вы используете GIF. вот некоторые учебные ссылки, this, this и this также this quistion

+0

У меня есть 181 анимация с возможностью рисования xml, и я не могу преобразовать +400 фото в gif – roz

+0

гул, что вы на самом деле реализуете. вы используете его в списке? – Sajidkhan

+0

uffff, u r еще не прочитал вопрос! – roz

Смежные вопросы