5

自分の中心を中心に回転させたい画像(丸い読み込み円のように見えます)があります。PivotYとPivotXを画像の0.5Fまたは半分に設定することを提案するコードをたくさん見ました。両方とも機能しません。多くの試行錯誤の後、次のコードでそれ自体の中心を中心に回転します。

ImageView loading = FindViewById<ImageView>(Resource.Id.loadingGif);
RotateAnimation rAnim = new RotateAnimation(0.0F, 359.0F,      Dimension.RelativeToSelf, 0.25F, Dimension.RelativeToSelf, 0.25F);
rAnim.Interpolator = new LinearInterpolator();
rAnim.RepeatCount = Animation.Infinite;
rAnim.Duration = 1000;
loading.StartAnimation(rAnim);

しかし、アニメーション自体はもうスムーズに進んでおらず、画像は約50度回転しているように見え、その後ハングし始め、回転の半分をスキップして、通常は回転の上半分で続行します(意味があると思います)。

私の回転が360度完全にスムーズに回転しない理由は何ですか?

編集

私はまだこの問題を解決していませんが、私はそれについて何か独特なことを発見しただけです。アニメーションはロード画面で使用され、アニメーションの瞬間に追加の機能はありません。画面に指を置いたままにすると、アニメーションがスムーズに行われることに気づきました。

これは、問題がアニメーションコードではなく、何か他のものにあるのではないかと思いました。しかし、私はまだ何を知りませんか。

4

1 に答える 1

5

私はついに答えを見つけました!

私は次の行を含めました:

loading.setDrawingCacheEnabled(true);

その後、ピボットも 0.5F に変更する必要がありました。そして今、アニメーションはスムーズに実行されます!

//Rotate image
ImageView loading = FindViewById<ImageView>(Resource.Id.loadingGif);
loading.setDrawingCacheEnabled(true);
rAnim = new RotateAnimation(0.0F, 359.0F, Dimension.RelativeToSelf, 0.5F, Dimension.RelativeToSelf, 0.5F);  
rAnim.Interpolator = new LinearInterpolator();
rAnim.RepeatCount = Animation.Infinite;
rAnim.Duration = 1500;
loading.StartAnimation(rAnim);
于 2012-10-02T07:07:23.010 に答える