我遇到了以下问题。我有一个ListView
,其中每一行都是这样的
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:duplicateParentState="true" >
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:id="@+id/dashplayer"
android:layout_centerHorizontal="true"
android:focusable="false"
android:clickable="false"
android:tag="1"
android:src="@android:color/transparent"
android:layout_below="@+id/name"
android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Camera name"
android:id="@+id/name"
android:textColor="@android:color/white"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true" />
</RelativeLayout>
到目前为止一直很好,然后我有一个getView
方法的适配器:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final String name = getItem(position);
LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = li.inflate(R.layout.dash_row, parent, false);
ImageView iv=(ImageView) convertView.findViewById(R.id.dashplayer);
if(!cameras.get(position).isActive()){
iv.setImageResource(R.drawable.noise); // HERE COMES THE ANIMATION
}else{
iv.setImageBitmap(cameras.get(position).getCurrentFrame()); //static bitmap, works fine
}
return convertView;
}
首先,它膨胀上面给出的xml,然后将ImageView
放入动画可绘制或静态位图。位图运行良好,但问题在于动画。
它在xml中定义如下:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/frame0" android:duration="80" />
<item android:drawable="@drawable/frame1" android:duration="80" />
<item android:drawable="@drawable/frame2" android:duration="80" />
<item android:drawable="@drawable/frame3" android:duration="80" />
<item android:drawable="@drawable/frame4" android:duration="80" />
<item android:drawable="@drawable/frame5" android:duration="80" />
<item android:drawable="@drawable/frame6" android:duration="80" />
</animation-list>
让我感到困扰的是,动画在一段时间后停止了(可能是我打电话给notifyDatasetChanged
,但我不确定这一点)。滚动列表后,它再次开始播放。我也可以通过调用listView.scrollListBy(0);
(或旧版API中类似的东西)来播放它,但动画仍然有些不稳定。
有谁有任何想法,为什么动画会停止?
答案 0 :(得分:0)
iv.setBackground(getResources().getDrawable(R.drawable.noise));
//depending on your android version code, setBackgroundDrawable in older versions
AnimationDrawable animationDrawable = (AnimationDrawable) iv.getBackground();
放animationDrawable.setVisible(true,true)
代替animationDrawable.start()
,它会正常工作