Android TweenアニメーションのRotateAnimationで画像が回転し続ける
5177 ワード
この記事では、Androidでrotateを使用して画像を回転させる効果について説明します.Androidプラットフォームは、シーン内のオブジェクトを絶えず画像変換(平行移動、スケール、回転)することでアニメーション効果を生み出すTweenアニメーションの2種類のアニメーションを提供しています.2つ目はフレームアニメーションで、映画と同じように事前に作った画像を順番に再生します.本論文では,Tweenアニメーションのrotateによる回転効果を解析した.
新浪微博クライアントで各操作が進行中の場合activityの右上隅に回転し続けるアイコンがあり、リフレッシュのような効果があり、ユーザーに操作中のヒントを与える.この非モダリティなヒントは推奨されていますが、この効果をどのように実現するかを共有しましょう.
1、ImageViewを定義する
ImageViewを定義するのは、画像をロードするためであり、その画像はrotateによって回転するために使用され、他のViewでも使用できます.
リソースファイルは
そのうちandroid:srcは画像内容であり、添付ファイルの画像を使用することができる.
JAvaコードは
2、rotate回転効果の定義
res/animフォルダの下にtipを新規作成します.xmlファイル、内容は以下の通りです
0度から359度までのサイクル回転を意味し、0度から359度(360度で停止すると停止する)までの回転時間は500 ms、回転中心距離viewの左頂点は50%距離、viewの上辺から50%距離、すなわち正中心とし、各意味は以下の具体的な属性を参照して説明する.
JAvaコードは
setInterpolatorは回転速度の設定を示します.LinearInterpolatorは均一速度効果、Accelerateinterpolatorは加速効果、DecelerateInterpolatorは減速効果、具体的には以下のandroid:interpolatorの紹介が見られます.
a.その中の属性の意味は以下の通りである(赤い部分に注意する):
android:fromDegrees開始角度度数
Android:toDegrees終了の角度度数、負数は反時計回り、正数は時計回りを表します.10周するとandroid:fromDegreesより3600大きくなります
android:pivotX回転中心のX座標
浮動小数点またはパーセンテージ.浮動小数点数はObjectの左端に対して、例えば5を表す.パーセンテージは、5%などのObjectに対する左端を表します.別のパーセンテージは、親コンテナに対する左縁、例えば5%pを表す.一般的に50%に設定するとObjectの中心に表示されます
Android:pivotY回転中心のY座標
浮動小数点またはパーセンテージ.浮動小数点数はObjectの上端に対して、例えば5を表す.パーセンテージは、5%などのObjectの上端に対して表示されます.別のパーセンテージは、親コンテナの上端に対して、例えば5%pを表す.一般的に50%に設定するとObjectの中心に表示されます
android:durationは、android:fromDegreesからandroid:toDegreesに回転するのにかかる時間をミリ秒単位で表します.速度の計算に使用できます.
Android:interpolatorは変化率を表しますが、実行速度ではありません.アニメーション効果を加速、減速、反復、バウンスなどに設定できる補間アトリビュート.デフォルトでは開始と終了が遅い中間速で、
android:startOffset start関数を呼び出した後に実行開始を待つ時間、単位はミリ秒、10であれば10 ms後に実行開始を示す
android:repeatCountの繰り返し回数、デフォルトは0、intでなければなりません.-1で停止しないことを表すことができます.
Android:repeatModeが繰り返すモードで、デフォルトはrestart、すなわちヘッダが再実行を開始し、reverseが終了から前方に再実行できる.Android:repeatCountが0より大きい場合、またはinfiniteの場合に有効です.
android:detachWallpaper壁紙で動作するかどうかを示します
android:zAdjustmentは、animatedされたコンテンツの実行時のz軸上の位置を表し、デフォルトはnormalです.
normalコンテンツの現在のz軸順序を保持
トップレベルでtop実行時に表示
bottom運転時最下層に表示
b.運転速度
運転速度は、運転時間(android:duration)を運転角度差(android:toDegrees-android:fromDegrees)で割ったもので、例えばandroid:durationは1000、android:toDegreesは360、android:fromDegreesは0で1秒回転1周を表す.
c.循環運転
android:repeatCount="-1"はループ運転を表し、android:fromDegrees="0"android:toDegrees="360"は無停止を表す
3、回転の開始と停止
アクションの開始前に呼び出す
操作完了時に呼び出す
多くの友人は回転animationを停止する方法が分からないので、rotateを強制的に何回転させて操作を表すかを設定しますが、操作の実際の進捗と一致することはできません.実際には、上記のコードに示すようにanimationをクリアすればいいだけです.
その他:
上の回転に対して、(activityを再描画しないように設定されている)クロススクリーンで問題が発生します.すなわち、回転中心がずれ、アニメーションの回転が元の回転中心からずれることがあります.次のように解決する
属性は次のように参照できます.
http://developer.android.com/guide/topics/resources/animation-resource.html#rotate-element
http://developer.android.com/reference/android/view/animation/Animation.html#lattrs
アニメーションの詳細については
http://www.linuxgraphics.cn/animation/android_tween_animation.html
Android開発段階:私のマイクロブログTrinea、もっとタイムリーで全面的な技術を共有します! Androidプラグイン化 Androidオープンソースライブラリ取得方法整理 VPN云梯推荐,合买每月只5元,全平台支持 Java Annotationおよびいくつかの一般的なオープンソースプロジェクトの注釈原理の概要 Android自動ラウンド無限ループのViewPager Androidオープンソースプロジェクト要約 Android性能最適化総括 Androidライブラリ(キャッシュドロップダウンリストビューサイレントインストールなど) Android ImageCacheピクチャキャッシュ プルダウンリフレッシュおよびスクロールボトムにより多くのListviewをロード を使用する.
新浪微博クライアントで各操作が進行中の場合activityの右上隅に回転し続けるアイコンがあり、リフレッシュのような効果があり、ユーザーに操作中のヒントを与える.この非モダリティなヒントは推奨されていますが、この効果をどのように実現するかを共有しましょう.
1、ImageViewを定義する
ImageViewを定義するのは、画像をロードするためであり、その画像はrotateによって回転するために使用され、他のViewでも使用できます.
リソースファイルは
そのうちandroid:srcは画像内容であり、添付ファイルの画像を使用することができる.
JAvaコードは
ImageView infoOperatingIV = (ImageView)findViewById(R.id.infoOperating);
2、rotate回転効果の定義
res/animフォルダの下にtipを新規作成します.xmlファイル、内容は以下の通りです
0度から359度までのサイクル回転を意味し、0度から359度(360度で停止すると停止する)までの回転時間は500 ms、回転中心距離viewの左頂点は50%距離、viewの上辺から50%距離、すなわち正中心とし、各意味は以下の具体的な属性を参照して説明する.
JAvaコードは
Animation operatingAnim = AnimationUtils.loadAnimation(this, R.anim.tip);
LinearInterpolator lin = new LinearInterpolator();
operatingAnim.setInterpolator(lin);
setInterpolatorは回転速度の設定を示します.LinearInterpolatorは均一速度効果、Accelerateinterpolatorは加速効果、DecelerateInterpolatorは減速効果、具体的には以下のandroid:interpolatorの紹介が見られます.
a.その中の属性の意味は以下の通りである(赤い部分に注意する):
android:fromDegrees開始角度度数
Android:toDegrees終了の角度度数、負数は反時計回り、正数は時計回りを表します.10周するとandroid:fromDegreesより3600大きくなります
android:pivotX回転中心のX座標
浮動小数点またはパーセンテージ.浮動小数点数はObjectの左端に対して、例えば5を表す.パーセンテージは、5%などのObjectに対する左端を表します.別のパーセンテージは、親コンテナに対する左縁、例えば5%pを表す.一般的に50%に設定するとObjectの中心に表示されます
Android:pivotY回転中心のY座標
浮動小数点またはパーセンテージ.浮動小数点数はObjectの上端に対して、例えば5を表す.パーセンテージは、5%などのObjectの上端に対して表示されます.別のパーセンテージは、親コンテナの上端に対して、例えば5%pを表す.一般的に50%に設定するとObjectの中心に表示されます
android:durationは、android:fromDegreesからandroid:toDegreesに回転するのにかかる時間をミリ秒単位で表します.速度の計算に使用できます.
Android:interpolatorは変化率を表しますが、実行速度ではありません.アニメーション効果を加速、減速、反復、バウンスなどに設定できる補間アトリビュート.デフォルトでは開始と終了が遅い中間速で、
android:startOffset start関数を呼び出した後に実行開始を待つ時間、単位はミリ秒、10であれば10 ms後に実行開始を示す
android:repeatCountの繰り返し回数、デフォルトは0、intでなければなりません.-1で停止しないことを表すことができます.
Android:repeatModeが繰り返すモードで、デフォルトはrestart、すなわちヘッダが再実行を開始し、reverseが終了から前方に再実行できる.Android:repeatCountが0より大きい場合、またはinfiniteの場合に有効です.
android:detachWallpaper壁紙で動作するかどうかを示します
android:zAdjustmentは、animatedされたコンテンツの実行時のz軸上の位置を表し、デフォルトはnormalです.
normalコンテンツの現在のz軸順序を保持
トップレベルでtop実行時に表示
bottom運転時最下層に表示
b.運転速度
運転速度は、運転時間(android:duration)を運転角度差(android:toDegrees-android:fromDegrees)で割ったもので、例えばandroid:durationは1000、android:toDegreesは360、android:fromDegreesは0で1秒回転1周を表す.
c.循環運転
android:fromDegrees="0"
android:toDegrees="360"
android:repeatCount="-1"
android:repeatCount="-1"はループ運転を表し、android:fromDegrees="0"android:toDegrees="360"は無停止を表す
3、回転の開始と停止
アクションの開始前に呼び出す
if (operatingAnim != null) {
infoOperatingIV.startAnimation(operatingAnim);
}
操作完了時に呼び出す
infoOperatingIV.clearAnimation();
多くの友人は回転animationを停止する方法が分からないので、rotateを強制的に何回転させて操作を表すかを設定しますが、操作の実際の進捗と一致することはできません.実際には、上記のコードに示すようにanimationをクリアすればいいだけです.
その他:
上の回転に対して、(activityを再描画しないように設定されている)クロススクリーンで問題が発生します.すなわち、回転中心がずれ、アニメーションの回転が元の回転中心からずれることがあります.次のように解決する
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (operatingAnim != null && infoOperatingIV != null && operatingAnim.hasStarted()) {
infoOperatingIV.clearAnimation();
infoOperatingIV.startAnimation(operatingAnim);
}
}
属性は次のように参照できます.
http://developer.android.com/guide/topics/resources/animation-resource.html#rotate-element
http://developer.android.com/reference/android/view/animation/Animation.html#lattrs
アニメーションの詳細については
http://www.linuxgraphics.cn/animation/android_tween_animation.html
Android開発段階: