簡體   English   中英

可繪制動畫不起作用

[英]drawable animation not workin

我想在我的列表中使用動畫繪制的,但是當我開始listActivity它crashs我從得知這個 ,當我刪除此2個動畫代碼

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

,它可以在我的手機(帶有Android 4.4的p7)中自行制作動畫,但在我嘗試過的其他手機(華碩記事本7,索尼c)中卻沒有動畫可繪制對象! 注意,當我使用此注冊碼時,所有手機都崩潰了,以下是我的compelet碼,怎么了?

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;

    }
}

}

謝謝

文檔所述,您應該等到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,請使用電影類。 這里有一些學習鏈接, 這個這個這個該quistion

我發現了我的問題!

我用過GamePic.setImageResource(Resources2.GamePicArray [position]);

但我應該用

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

現在工作正常!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM