在文本视图更改文本时,如何使淡入淡出和fadein动画
-
30-09-2019 - |
题
我尝试在ChangeText上对文本视图进行动画动画,但总是看到动画的一个方向,我只看到vadeout
我尝试的是:beforchange = vadeout和onchange或fadein之后
这是我的活动方法中我的代码:
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()
其他提示
从代码的外观看,您正在告诉文本视图在更改后而不是淡入。
另外,我不确定此代码的效率如何,因为在更改文本之前,只需将其调用。在beforetextchanged上,任何动画都不会有足够的时间,因为它将在ontextchanged中立即被您的代码替换
编辑** 回复下面的评论
因此,要使文本视图淡入淡出,然后淡入新内容,我将逐渐启动淡出的动画,而不是使用文本观看者。我会给淡出的动画 AnimationListener 然后,在AnimationEnd上,您可以在开始Fadein动画之前设置新文本。
不隶属于 StackOverflow