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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Q&A

解決済

1回答

1128閲覧

Android studio アニメーション完了待ちについて

hood

総合スコア351

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

0グッド

0クリップ

投稿2018/08/04 15:57

編集2018/08/06 04:04

###Android studioアニメーション完了待ちについて
Android studioでは、アニメーション完了待ちまで他の処理を出来なくするといった機能はないのでしょうか?
私の情報収集能力が低いだけなのかもしれませんが、検索しても引っかかりませんでした。
例えばAlphaAnimationの場合

java

1AlphaAnimation alpha = new AlphaAnimation(1.0f,0.0f);//完全に透過0が黒 2 alpha.setFillEnabled(true); 3 alpha.setFillAfter(true); 4 alpha.setDuration(3000);

と、こうなりますが、ここに何か追加すればアニメーション完了待ちを実現できるのでしょうか?


追記
回答ありがとうございます。こちらはアドバイスいただいた後に書いたコードです。
しかしフェードアウトのあとに、フェードインを行われています。つまり上書き?されています。
これを防ぐにはどうしたらよいのでしょうか?
指針だけでも教えていただけたらありがたいです・・・

lang

1 View decorView = getWindow().getDecorView(); 2 decorView.setBackgroundColor(Color.BLACK); 3 4 // ルートビューにIDを与えてfindViewById()で取得しても同じ 5 View rootView = ((ViewGroup) decorView).getChildAt(0); 6 rootView.setBackgroundColor(Color.WHITE); 7       8      //画面全体をフェードアウト 9 AlphaAnimation fadeout = new AlphaAnimation(1.0f, 0.0f); 10 fadeout.setFillEnabled(true); 11 fadeout.setFillAfter(true); 12 fadeout.setDuration(3000); 13 rootView.startAnimation(fadeout); 14 15 //画面全体をフェードイン 16 AlphaAnimation fadein = new AlphaAnimation(0.0f,1.0f); 17 fadein.setFillEnabled(true); 18 fadein.setFillAfter(true);//保持。 19 fadein.setDuration(3000); 20 rootView.startAnimation(fadein); 21 22      fadeout.setAnimationListener(new Animation.AnimationListener() { 23 @Override 24 public void onAnimationStart(Animation animation) { 25 //フェードアウト始まるとき操作ボタンを消す 26 } 27 28 @Override 29 public void onAnimationEnd(Animation animation) { 30 } 31 32 }); 33 34 fadein.setAnimationListener(new Animation.AnimationListener() { 35 @Override 36 public void onAnimationStart(Animation animation) { 37 } 38 39 @Override 40 public void onAnimationEnd(Animation animation) { 41 //フェードイン終わるとき操作ボタンを表す 42 } 43 44 });

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

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

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

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

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

fuzzball

2018/08/06 03:49

タグは "Android Studio"ではなく "Android" では?
hood

2018/08/06 03:52

書き忘れてしまいましたが、私はIDEにAndroid studioを使っています。なので問題ないかと・・・
fuzzball

2018/08/06 03:56

いや、これ Android Studio の質問じゃないでしょ?
hood

2018/08/06 04:02

今まで私はタグを質問に関係するものとして認識していました。なのでAndroid Studioを使っているのなら、そのタグをつけるべきだと思っていました。しかし、回答者さまの文を見ると、Android studioのタグはAndroid studioの操作面に関する質問だけにつけるもののようですね。つまり私のタグに対する認識が間違っていたようです。これからはそこらへんの区別をきちんとつけたいと思います。
hood

2018/08/06 04:02

ご指摘ありがとうございます。
fuzzball

2018/08/06 04:08

"Android Studio"しか付いていないから気になりました。少なくとも一番重要な"Android"タグは付けるべきでしょう。
hood

2018/08/06 04:11

一言もありません・・・今までまったくうっかりしていました・・・
guest

回答1

0

ベストアンサー

Java

1 alpha.setAnimationListener(new Animation.AnimationListener() { 2 @Override 3 public void onAnimationStart(Animation animation) { 4 5 } 6 7 @Override 8 public void onAnimationEnd(Animation animation) { 9 10 } 11 12 @Override 13 public void onAnimationRepeat(Animation animation) { 14 15 } 16 }); 17

とすれば、アニメーションのイベントに応じたメソッドが呼び出されます。onAnimationStart()に操作を止める処理を記述して、onAnimationEnd()にそれを解除する感じですか?

投稿2018/08/05 05:35

keicha_hrs

総合スコア6768

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

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

hood

2018/08/05 07:34 編集

回答ありがとうございます。`setAnimationListener`があるというのは知っていましたが、そのように使えばいいのかと、勉強になりました。これで操作を止めることができると思います。(具体的な方法としては、フェードアウトのときに操作ボタンを消し、フェードインのとき操作ボタンを出すなどが思いつきました。(私はノベルゲームを作っています。)) と、それはよいのですが、もしよろしければあと一つだけ質問させてください。というのも、上記の方法では実現できなさそうな動作があるからです。 それは「フェードアウトが終わったあと、フェードインをすること」です。 というのも、二つアニメを同時に書くとフェードインだけが適応されてしまうのです。 おそらく後半に書いたフェードインが前半のフェードアウトを上書きしているのでしょうが、これを食い止めるやり方が思いつきません・・・ コードを追記しておこうと思うので、よかったらそちらの方でも、アドバイスいただけると幸いです・・・
keicha_hrs

2018/08/05 13:34

フェードインの方のstartAnimation()を、「フェードインする準備ができた段階」で実行すれば良いです。例えばfadeout.setAnimationListener()の中に実装したリスナーのonAnimationEnd()に記述すれば、フェードアウトが終わったところから直ちにフェードインが始まる動作になるはずです(リスナーの外側で宣言した変数をリスナーの中で用いるには、宣言にfinalを付ける必要があります)。変数fadeinは今の宣言位置のままでもいいですし、onAnimationEnd()の中で宣言から使用まで行う形でもいいでしょう。
hood

2018/08/06 03:37

回答ありがとうございます。 返信遅れてすいませんでした。(メールで通知が来るようにしているのに鳴らなかった・・・) >フェードインの方のstartAnimation()を、「フェードインする準備ができた段階」で実行 なるほど、そのような考え方ができたのですね・・・・ 知識の豊富さと応用の発想、心から感服の至りです。 また「宣言にfinalをつける」などの注意も、私にとって非常に助かるアドバイスです。 何度も何度も本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問