AnimationDrawable未在4.03设备上显示

时间:2013-12-16 10:46:32

标签: android animationdrawable

我在ListView中的行布局中有一个framelayout。当项目出现在列表视图中时,会触发AnimationDrawable。

这在Nexus 4和Nexus 5上运行良好。我不得不使用view.setBackground更改为view.setBackgroundDrawable以支持稍微较旧的设备。在任何一款Nexus设备上都没有破坏它。它也适用于旧的姜饼设备。

在HTC One V上运行4.03。从未出现过AnimationDrawable。但是,如果我将行xml文件硬编码以显示标准drawable,而不是dynamicdrawable,那么它看起来很好。

这是dynamicdrawable的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();
            }

        }

1 个答案:

答案 0 :(得分:0)

我终于弄明白了。这是因为包含动画的视图使用填充来显示它的背景。当我改变它,以便它的第一个孩子使用保证金而不是它工作得很好