1

我正在使用开发人员指南 ( http://developer.android.com/guide/topics/graphics/drawable-animation.html ) 创建一个动画记录按钮,对操作栏菜单项而不是 imageView 进行小的更改。当我调用 onStart 时它不播放?

这是我使用的代码

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

有谁知道为什么不播放?

4

3 回答 3

2

对我来说,在下一个周期中调用start()

new Handler().post(new Runnable() {
    @Override
    public void run() {
        animationDrawable.start();
    }
});
于 2014-07-17T09:30:45.963 回答
0

我有同样的问题。我可以通过使用此处描述的操作栏提供程序来解决它:http: //developer.android.com/guide/topics/ui/actionbar.html#ActionProvider

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

于 2013-01-30T15:26:43.473 回答
0

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


我的 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()in 并onCreateOptionsMenu没有真正开始动画......

我最终打电话changeMenuIcononWindowFocusChanged

于 2015-01-18T21:26:33.393 回答