我在 ListView 中的一行的布局中有一个框架布局。当列表视图中出现项目时,将触发 AnimationDrawable。
这在 Nexus 4 和 Nexus 5 上运行良好。我不得不从使用 view.setBackground 更改为 view.setBackgroundDrawable 以支持稍旧的设备。进行此更改并没有在任何 Nexus 设备上破坏它。它也适用于旧的姜饼设备。
在 HTC One V 上,运行 4.03。AnimationDrawable 永远不会出现。但是,如果我对行 xml 文件进行硬编码以显示标准可绘制对象,而不是动画绘制对象,则它看起来很好。
这是animationdrawable的xml文件
<item
android:drawable="@drawable/alert_red"
android:duration="700"/>
<item
android:drawable="@drawable/alert_red_glow"
android:duration="700"/>
</animation-list>
这是启动动画的代码
@SuppressWarnings("deprecation")
public void startGlowingRow() {
notificationStatus
.setBackgroundDrawable(getResources().getDrawable(
R.drawable.glowing_emergency_notification));
glowRequest = new GlowRequest();
notificationStatus.post(glowRequest);
}
public void stopGlowingRow() {
try {
// Remove any callbacks to make background glowing
if (glowRequest != null)
notificationStatus.removeCallbacks(glowRequest);
glowDrawable = (AnimationDrawable) notificationStatus
.getBackground();
glowDrawable.stop();
} catch (ClassCastException cce) {
// Not the correct background in view so don't try to stop
}
}
// Runnable which sets glowing effect after view has loaded
private class GlowRequest implements Runnable {
public void run() {
glowDrawable = (AnimationDrawable) notificationStatus
.getBackground();
glowDrawable.start();
}
}