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

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

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

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

Q&A

解決済

1回答

3702閲覧

ボタンクリックでアニメーション。その後アニメを止めたい

suu

総合スコア13

Android

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

0グッド

0クリップ

投稿2015/12/19 10:16

編集2015/12/20 01:55

java

1public void aButtonClick(View view) { 2 3 Button button = (Button) findViewById(R.id.bbutton); 4 AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f) 5 alphaAnimation.setDuration(2000); 6 alphaAnimation.setFillAfter(true); 7 button.startAnimation(alphaAnimation); 8} 9 10public void bButtonClick(View view) { 11 12 count++; 13 view.setBackgroundColor(Color.RED); 14 Log.d("count ", "" + count); 15}

Aボタンを押すとBボタンがフェードアウトして見えなくなる記述です。

Aボタンを押す前に、Bボタンを押すとボタン(背景)が赤く変更されますが
Aボタンを押した後、Bボタンを押すと何にもかわりません。
Bボタンのカウントはされてるので、クリックはされてるはずです。

これはアニメーションが続いた状態なのでしょうか?
どのようにしたらBボタンが生きるようになるのでしょうか?

改良後のコード

public void onButtonClick_A(View view) { Button button = (Button) findViewById(R.id.B_button); AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f); alphaAnimation.setDuration(2000); alphaAnimation.setFillAfter(true); button.startAnimation(alphaAnimation); } public void onButtonClick_B(View view) { Button button = (Button) findViewById(R.id.B_button); AlphaAnimation alphaAnimation = new AlphaAnimation(0,0); alphaAnimation.setDuration(0); button.startAnimation(alphaAnimation); alphaAnimation.cancel(); view.setBackgroundColor(Color.RED); }

「アニメーションを止める」と回答があったので書き換えてみました
cancel()でアニメを止め、なんとか表示がされるようになったんですが、
ちょっと回りくどい感じで、他に改良の余地はあるのでしょうか?

また上の記述では、Bボタンを押すと一瞬Bボタンが消えて、そして現れます
これはアニメーションを止める処理がされてるので、そうなるのでしょうが
なにか方法はないでしょうか

他のやり方では
ClickListenerを使いAnimationListenerをセットし
@OverrideされるonAnimationEndでなんとかしようと考えたのですが
今回はbutton WidgetsのonClick内だけで処理できないだろうかと考えてます

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

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

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

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

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

guest

回答1

0

ベストアンサー

透明にすることと背景の色を変えることは別です。透明になっているだけで背景は赤色になっていると思います。

アニメーションを止める必要があります。

投稿2015/12/19 10:44

編集2015/12/19 10:48
yona

総合スコア18155

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

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

suu

2015/12/20 01:58

回答ありがとうございます。 なんとかアニメを止めるコードを考えたのですが、他にアイディアないでしょうか
yona

2015/12/20 02:45

回りくどいと感じるのはアニメーションの効果をアニメーションで止めているからでしょう。 getAnimationを使うとViewについているAnimationを取得できます。
suu

2015/12/21 02:14

解決しました! getAnimationでcancelではなくclearAnimationでいけました。残像も残りません clearAnimationはキャッシュが残ってしまいますが、これも解決しそうです ありがとうございました
yona

2015/12/21 02:17

そんなメソッドが笑 勉強になりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問