TextViewがテキストを変更しながらフェードアウトとフェデインをアニメーション化する方法

StackOverflow https://stackoverflow.com/questions/3554685

質問

ChangeTextでTextViewをアニメーション化しようとしますが、常にアニメーションの1つの方向しか表示されません。フェードアウトだけが表示されます

私が試しているのは:beforChange =フェードアウトとオンチャングまたはフェデインの後

これが私のアクティビティのオンクリート方法の私のコードです:

    final Animation out = new AlphaAnimation(1.0f, 0.0f);
    out.setDuration(1000);

    final Animation in = new AlphaAnimation(0.0f, 1.0f);
    in.setDuration(1000);


    bidFirst.setAnimation(out);
    bidMiddle.setAnimation(out);
    bidLast.setAnimation(out);

    TextWatcher bidWatcher = new TextWatcher() {
      public void onTextChanged(CharSequence s, int start, int before, int count) {
        in.startNow();
        bidFirst.setAnimation(out);
        bidMiddle.setAnimation(out);
        bidLast.setAnimation(out);
      }

      public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        out.startNow();
        bidFirst.setAnimation(in);
        bidMiddle.setAnimation(in);
        bidLast.setAnimation(in);
      }

      public void afterTextChanged(Editable s) {
      }
    };
    bidFirst.addTextChangedListener(bidWatcher);
    bidMiddle.addTextChangedListener(bidWatcher);
    bidLast.addTextChangedListener(bidWatcher);

私のコードには何か問題があると思いますが、それが機能しなければならないと信じています。

私が今持っているのは次のとおりです。すべてのsettextでは、変更されたテキストはフェードアウトのみですが、テキストが変更され、決してフェードインしません!?

役に立ちましたか?

解決

Textswitcherはまさにあなたが探しているものです。それらを使用するだけです setInAnimation()setOutAnimation. 。テキストを変更すると、アニメーションが自動的に実行されます setText()

他のヒント

あなたのコードの外観によって、あなたはフェードインするのではなく、変化の後にフェードアウトするようにテキストビューに伝えています。

また、このコードがどの程度効果的であるかはわかりません。 AnimationがbeforeTextChangedで発生するのに十分な時間がありません。

編集** 以下のコメントに返信してください

したがって、TextViewをフェードアウトさせるために、新しいコンテンツでフェードインするために、TextWatcherを使用するのではなく、FadeAutアニメーションをプログラム的に開始します。フェードアウトアニメーションを提供します AnimationListener AnimationEndでは、Fadeinアニメーションを開始する前に新しいテキストを設定できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top