[解決済み] Androidのアニメーションが繰り返されない
質問
数回(または無限に)繰り返す簡単なアニメーションを作ろうとしています。
それは次のように思われます。
android:repeatCount
は機能しません!
以下は、私のアニメーション・リソースです。
/res/anim/first_animation.xml
:
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:repeatCount="infinite"
>
<scale
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="500"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:toXScale="1.2"
android:toYScale="1.2"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false" />
<scale
android:interpolator="@android:anim/accelerate_interpolator"
android:startOffset="500"
android:duration="500"
android:fromXScale="1.2"
android:fromYScale="1.2"
android:toXScale="1.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false" />
</set>
まず、画像を1.0から1.2サイズに500msで拡大縮小します。
そして、500msで1.0に戻す。
こんな感じで使っています。
Animation firstAnimation = AnimationUtils.loadAnimation(this, R.anim.first_animation);
imgView.startAnimation(firstAnimation);
1サイクルして終了します。
どうすれば意図したとおりに動作させることができるのでしょうか?
どのように解決するのですか?
更新しました。
2011年9月、Androidエンジニアがこの問題の大部分を修正しました。XMLで無視されていた属性が動作するようになり、例外として
repeatCount
と
fillEnabled
などはまだ無視されます(なぜか意図的に)。つまり、まだ
AnimationSet
を繰り返すのはまだ簡単ではないということです。
の概要をご覧ください。
ドキュメントを更新しました。
にある概要 (どの属性が無視され、どの属性が機能し、どれが子に渡されるかが説明されています) を参照してください。また、より深く理解するために
fillAfter
,
fillBefore
そして
fillEnabled
は実際に動作していますので、それに関するエンジニア (Chet Haase) のブログ記事をご覧ください。
ここで
.
オリジナルの回答
Pavel さんや他の方の回答を展開すると、確かに
<set>
タグがとんでもなくバグだらけなのは事実です。このタグは
repeatCount
および他の多くの属性を正しく扱うことができません。
私は数時間を費やして、それが対処できることとできないことを把握し、ここにバグレポート/問題を提出しました。 問題 17662
要約すると(これは
AnimationSet
s):
setRepeatCount() / android:repeatCount
<ブロッククオートこの属性は(repeatModeと同様に)コードやXMLでは機能しません。このため、アニメーションのセット全体を繰り返すことは困難です。
setDuration() / android:duration
コード内のAnimationSetにこれを設定するとうまくいきますが(子アニメーションのすべての継続時間を上書きします)、XMLのタグに含まれる場合はそうではありません。
setFillAfter() / android:fillAfter
これはコードとタグのXMLの両方で動作します。不思議なことに、私は fillEnabled を true に設定する必要なく動作するようにしました。
setFillBefore() / android:fillBefore
コードとXMLの両方で効果がない/無視されているように見える
setFillEnabled() / android:fillEnabled
コードとXMLの両方で効果がない/無視されるようです。fillEnabled を含めず、fillEnabled を false に設定しなくても、fillAfter を動作させることができます。
setStartOffset() / android:startOffset
これはコードの中だけで動作し、XMLでは動作しません。
関連
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] アンドロイド アニメーションの拡大・縮小
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み] BottomNavigationViewを新しいNavControllerで使用する際に、フラグメントを生かす方法はありますか?
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] 文字列リソースにHTML?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Android Debug Bridgeでアプリケーションのインストール時にINSTALL_FAILED_VERSION_DOWNGRADEを無視する方法はありますか?
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] EclipseのAndroidプロジェクトにライブラリ/JARを追加する
-
[解決済み] TabLayoutに対応したandroidデザインでタブテキストのフォントを変更する
-
[解決済み] Android Studioの「未実装メソッドの追加」機能
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] ブルートゥースアプリケーションのテストにアンドロイドエミュレータを使用するには?
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?