2012-01-13 5 views
1

RotateAnimationは、私がそれを停止するまで無期限にImageViewをアニメーション化します。私は次のように設定アニメーションを持っている:私はimageView.cancelAnimation()を呼び出すと、それは可能私はそれを持つのではなく(あるいは、それはATのどんな角度)右のそれは上の終了どんなフレームでアニメーションを「凍結」するためのものですキャンセルしたときにRotateAnimationがリセットされないようにします。

Animation spin = new RotateAnimation(0.0f, 1800.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
    spin.setInterpolator(new LinearInterpolator()); 
    spin.setRepeatCount(Animation.INFINITE); 
    spin.setDuration(5000); 
    imageView.setAnimation(spin); 

最初のフレームにリセットしますか?

答えて

0

画像コンテンツをRotateDrawableにラップし、アニメーションを使用するのではなくImageViewに設定する方がよいでしょう。単純なハンドラを使用してsetImageLevel()を繰り返し呼び出して回転角度を調整することで、トランジションをアニメートできます。

アニメーションをフリーズするときに、Handlerへの投稿を停止すると、イメージは最後に設定されたレベルの値にとどまります。 Handlerへの投稿を再開して、好きな場合は再起動できます。

別のオプションは、カスタムViewGroupを作成し、getChildStaticTransformation()を使用して、子にカスタムトランスフォームを適用することです。ImageView手動でアニメーションステップを手動で処理するので、好きな時点で開始/停止することができますが、Transformationはアニメーションシステムがビューをアニメーション化するために使用するものなので、結果をそのエフェクトに近づけることができます。

HTH

+0

私はこれがうまくいくと思います。私が不確定なプログレスバーとして使用しようとすると、 'RotateDrawable'は滑らかではないという問題のみです。不確定なプログレスバーのフレームレートまたはスピードをどのように高めることができるか知っていますか? – Brian

+0

公開されていません。 'ProgressBar'は' AnimatedRotateDrawable'を使います。これはこれらのプロパティを持ちますが、隠れたクラスです。私はビューを変換するための別のオプションを追加しました。よりスムーズにするために、インターポレーターのメソッドを手動で呼び出す必要があるので、各ステップでどれだけアニメーションを調整するかを知る必要があります。 – Devunwired

+0

RotateDrawableの使用例はありますか?私はアンドロイドSDKで何も見つけることができません。 –

2

私は、その決定した角度になった後、その回転位置を保持するために持っているアプリを持っています。私はまもなく検索し、最終的にsetFillAfter()メソッドを呼び出すことがわかりました。これにより、回転がリセットされなくなります。

RotateAnimation rotate = new RotateAnimation(startingPoint, value, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
    image.setAnimation(rotate); 

    rotate.setDuration(ROTATION_INTERVAL); 
    rotate.setFillAfter(true); 
関連する問題