1

私は開発者ガイド ( http://developer.android.com/guide/topics/graphics/drawable-animation.html ) を使用して、アニメーション レコード ボタンを作成しています。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()してonCreateOptionsMenuも実際にはアニメーションが開始されないことがわかりました...

私は最終的に電話をかけchangeMenuIconましたonWindowFocusChanged

于 2015-01-18T21:26:33.393 に答える