質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

2回答

1698閲覧

アンドロイド tween animation translateについて連続性と反復の動き

tanaka201011

総合スコア10

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2016/07/19 00:31

編集2016/07/26 00:11

android アニメを学んでますが、四角形のような動きができたのですが、この動きを10回Repeat したいのですがよろしく。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

公式のドキュメントから、

AnimationSet
・duration, repeatMode, fillBefore, fillAfter:
These properties, when set on an AnimationSet object, will be pushed down to all child animations.
※(適当翻訳)子供に適用するよ

・repeatCount, fillEnabled:
These properties are ignored for AnimationSet.
※(適当翻訳)無視するよ

・startOffset, shareInterpolator:
These properties apply to the AnimationSet itself.
※(適当翻訳)自分自身に適用するよ

少しドキュメント読んだ感じ、cycleInterpolatorでごにょごにょすれば行けそう・・・
参考程度に

//追記
cycleInterpolatorやってみたらものすごく変なことになったので忘れてください・・・

何とかできないかと、いろいろ試してみましたがこれが限界でした・・・

xml

1<?xml version="1.0" encoding="utf-8"?> 2<set xmlns:android="http://schemas.android.com/apk/res/android" 3 android:startOffset="1000"> 4 5 <set> 6 <translate 7 android:duration="250" 8 android:fromXDelta="0%p" 9 android:toXDelta="75%p" 10 android:fillAfter="true" 11 android:interpolator="@android:anim/linear_interpolator" 12 android:repeatCount="10" 13 android:repeatMode="reverse"/> 14 </set> 15 16 <set android:startOffset="250"> 17 <translate 18 android:duration="250" 19 android:fromYDelta="0%p" 20 android:toYDelta="75%p" 21 android:fillAfter="true" 22 android:interpolator="@android:anim/linear_interpolator" 23 android:repeatCount="10" 24 android:repeatMode="reverse"/> 25 </set> 26 27</set>

Tweenで繰り返しは難しそうですね・・・

投稿2016/07/20 03:40

編集2016/07/21 03:30
abs123

総合スコア1280

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanaka201011

2016/07/26 00:14 編集

とりあえず、時間を使ってくれて感謝です。
abs123

2016/07/21 10:02

Tweenならこっちですね、 final ImageView hogeView = (ImageView) findViewById(R.id.hogeView); final Animation hugeAnim= AnimationUtils.loadAnimation(this, R.anim.huge); hugeAnim.setAnimationListener(new Animation.AnimationListener(){ final static int MAX_COUNT = 10; private int count = 0; @Override public void onAnimationStart(Animation animation) { // 何もしない } @Override public void onAnimationEnd(Animation animation) { count++; if(count > MAX_COUNT){ hogeView .startAnimation(animation); } } @Override public void onAnimationRepeat(Animation animation) { // 何もしない } }); new Handler().postDelayed(new Runnable() { @Override public void run() { hogeView .startAnimation(hugeAnim); } }, 1000); xmlのstartOffsetは0から始めないと繰り返すときにかくかくします。
tanaka201011

2016/07/22 00:09

abs123 のコードを試しましたけど、機能してないようです? 1回だけ周りますが、リピートはしないですね。ざんねんです。
abs123

2016/07/22 01:18

あ、カウントの条件文ミスってました 動作確認はしないとだめですね・・・
guest

0

  • xmlをsetタグで囲う。
  • Javaコード上でAnimation#setRepeatCountやAnimation#setRepeatModeを設定する。

また、コードはコード用の記述に修正してください。

投稿2016/07/19 01:53

編集2016/07/19 01:54
yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanaka201011

2016/07/26 00:12 編集

回答ありがとうございます.<set>とjavaに追記載しましたが、上手くいきません。どこがおかしいのですかね?以下がanim.xmlとjavaですけど。回答よろしくお願いします。 ---------java protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView img = (ImageView) findViewById(R.id.img); Animation anim = AnimationUtils.loadAnimation(this, R.anim.anim); anim.setRepeatCount(10); img.startAnimation(anim); } }
yona

2016/07/19 10:19

「上手くいかない」じゃなにもわかりません。具体的に書いてください。 あと、コード用の記述に修正してください。
tanaka201011

2016/07/20 23:57

かなりググッてますけたけど、AnimationListenerでできるかもなどの、yonaさんのような回答も多くあったんですが、結局、どれも正確に機能しないみたいですね。 yonaさんが、”もし”正確なコードを知っているのでしたら、具体的に教えてもらえますか? http://stackoverflow.com/questions/4480652/android-animation-does-not-repeatは2013年のQAでは結論は現在ではやり方はわからないとのことが書かれているだけですよ。
yona

2016/07/21 00:11

私ならAnimatorクラスを使います。ただし、質問のTweenAnimationとは異なりますが。
tanaka201011

2016/07/26 00:14 編集

yonaさん、何度も回答ありがとうございます。
yona

2016/07/21 01:27

そのコードが前回のアニメーションの終了を検知して再度アニメーションを実行する方法です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問