我试图逐字逐句地在textview上做一个淡入淡出的动画但是当我用视图动画做它时,它会在整个文本视图中淡出。
我尝试将视图动画与处理程序结合起来,以便在出现字母但我没有得到我想要的结果时。这是我试过的代码。 xml文件
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:interpolator="@android:anim/linear_interpolator"
android:duration="3000"
android:fillBefore="true"
android:zAdjustment="bottom"/>
java代码
public class TextViewAnimator {
private TextView textView;
private CharSequence text;
private long delay;
private int index;
private Handler timerHandler = new Handler();
private Runnable animationTask = new Runnable() {
@Override
public void run() {
textView.setText(text.subSequence(0, index++));
if (index <= text.length()) {
timerHandler.postDelayed(animationTask, delay);
}
}
};
public static TextViewAnimator newInstance(TextView textView,
CharSequence text, long delay) {
TextViewAnimator instance = new TextViewAnimator();
instance.textView = textView;
instance.text = text;
instance.delay = delay;
return instance;
}
public void start() {
textView.setText("");
timerHandler.postDelayed(animationTask, delay);
}
}
还有另一种逐字逐渐消失的方法吗?
答案 0 :(得分:1)
我想这太晚了,但仍然可以帮助别人。 我也需要这样的东西但是找不到令人满意的解决方案,决定制作一个自己的自定义视图,然后将其转换为库。尝试[淡入文本视图] [1]。它用一个漂亮的淡入动画逐个字母地设置文本。
<强>用法强>
在XML布局中
<believe.cht.fadeintextview.TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textColor="@android:color/black"
app:letterDuration="250"/>
在活动/片段中
believe.cht.fadeintextview.TextView textView = (believe.cht.fadeintextview.TextView) findViewById(R.id.textView);
textView.setLetterDuration(250); // sets letter duration programmatically
textView.isAnimating(); // returns current animation state (boolean)
textView.setText(); // sets the text with animation