测试机:魅族M030
测试内容:ImageView设置帧动画
结果:将背景转换成AnimationDrawable时类型转换错误
动画布局文件anim_laoding.xml:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_loading01" android:duration="75" /> <item android:drawable="@drawable/ic_loading02" android:duration="75" /> <item android:drawable="@drawable/ic_loading03" android:duration="75" /> <item android:drawable="@drawable/ic_loading04" android:duration="75" /> </animation-list>
ImageView imgView = new ImageView(context); imgView.setBackgroundResource(R.drawable.anim_loading); animation = (AnimationDrawable) imgView.getBackground();
最后一句直接报错,这个手机imageView.getBackground()返回的是一个ColorDrawable,导致类型转换错误,网上都是这么写的。
很无奈,最后我加了一个判断,来兼容这种机器:
ImageView imgView = new ImageView(context); imgView.setBackgroundResource(R.drawable.anim_loading); if(imgView.getBackground() instanceof AnimationDrawable) { animation = (AnimationDrawable) imgView.getBackground(); }但同时也导致在这些机器上没有了动画效果