TextViewがテキストを変更しながらフェードアウトとフェデインをアニメーション化する方法
-
30-09-2019 - |
質問
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アニメーションを開始する前に新しいテキストを設定できます。