animationDrawable不在Actionbar中播放?

时间:2012-12-18 19:53:46

标签: android

我正在使用开发者指南(http://developer.android.com/guide/topics/graphics/drawable-animation.html)来创建动画记录按钮,进行微小更改以使操作栏menuitem而不是imageView。当我打电话给onStart时它没有播放?

以下是使用

的代码
RecordButton.setIcon(R.drawable.recordbutton);
recordAnimation = (AnimationDrawable) RecordButton.getIcon();
recordAnimation.start();

有谁知道为什么不玩?

3 个答案:

答案 0 :(得分:2)

对我来说,在下一个周期中开始()

new Handler().post(new Runnable() {
    @Override
    public void run() {
        animationDrawable.start();
    }
});

答案 1 :(得分:0)

我遇到了同样的问题。通过使用此处所述的操作栏提供程序,我能够绕过它:http://developer.android.com/guide/topics/ui/actionbar.html#ActionProvider

跳过ShareActionProvider并创建一个自定义的。这使您可以使用操作栏项目(在本例中为ImageView)的自定义布局,您可以按照可绘制动画指南链接中的描述进行操作。

答案 2 :(得分:0)

我告诉这个可能会在这里结束的人:在我的应用程序中,我只是尝试使用相同的方法使用AnimationDrawable更改ActionBar按钮的图标,并且它可以正常工作。


My AnimationDrawable ic_action_recording_active

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" >
    <item android:drawable="@drawable/ic_action_recording_active0" android:duration="200" />
    <item android:drawable="@drawable/ic_action_recording_active1" android:duration="200" />
    <item android:drawable="@drawable/ic_action_recording_active2" android:duration="200" />
</animation-list> 

按下图标后我调用此方法(我在onOptionsItemSelected中处理它们):

public void changeMenuIcon(MenuItem item) {
    if (isRecording) {
        item.setIcon(R.drawable.ic_action_recording_active);
        AnimationDrawable icon = (AnimationDrawable) item.getIcon();
        icon.start();
    } else {
        item.setIcon(R.drawable.ic_action_recording);
    }
}

编辑:我刚看到在icon.start()中使用onCreateOptionsMenu并没有实际启动动画......

我最终在changeMenuIcon

中致电onWindowFocusChanged