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

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

ただいまの
回答率

90.51%

  • Android

    7302questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,938

suu

score 7

public void aButtonClick(View view) {

    Button button = (Button) findViewById(R.id.bbutton);
    AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.0f)
    alphaAnimation.setDuration(2000);
    alphaAnimation.setFillAfter(true);
    button.startAnimation(alphaAnimation);
}

public void bButtonClick(View view) {

    count++;
    view.setBackgroundColor(Color.RED);
    Log.d("count ", "" + count);
}


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内だけで処理できないだろうかと考えてます

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/12/20 10:58

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

    キャンセル

  • 2015/12/20 11:45

    回りくどいと感じるのはアニメーションの効果をアニメーションで止めているからでしょう。

    getAnimationを使うとViewについているAnimationを取得できます。

    キャンセル

  • 2015/12/21 11:14

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

    キャンセル

  • 2015/12/21 11:17

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

    キャンセル

同じタグがついた質問を見る

  • Android

    7302questions

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