700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android textview 淡入淡出 TextView淡入淡出效果

android textview 淡入淡出 TextView淡入淡出效果

时间:2021-09-25 15:24:47

相关推荐

android textview 淡入淡出 TextView淡入淡出效果

经常看到有些应用里面TextView会有淡入淡出效果,给人一种眼前一亮的感觉,如下图:

这篇文章简单介绍下它的代码实现。

首先,可以先将此动画分解成两部分,即淡入和淡出,淡入的时候,从底部向中心点移动,移动的过程中,文字越变越清晰;

淡出的时候,从中心点向顶部移动,移动过程中,文字越变越模糊。这其中涉及到两个属性:translationY(控件在纵向上的移动距离)、alpha(控件的不透明度)

本章将利用属性动画实现其效果。

首先,看淡出的实现:

privateObjectAnimator mFadeOutObjectAnimator;//由于淡出,是向上移动,坐标为负,这里设定向上移动150个像素

mFadeOutObjectAnimator = ObjectAnimator.ofFloat(mFadeinoutTv, "translationY", 0, -150);//动画执行时间设定为500毫秒

mFadeOutObjectAnimator.setDuration(500);

mFadeOutObjectAnimator.addUpdateListener(newValueAnimator.AnimatorUpdateListener() {

@Overridepublic voidonAnimationUpdate(ValueAnimator animation) {//当前动画时间点的动画值,在0到-150之间

float value = (float) animation.getAnimatedValue();//由于不透明度取值为0-1,故而除以150,value/150取值在-1到0之间

mFadeinoutTv.setAlpha(1 + value/150);

}

});

mFadeOutObjectAnimator.addListener(newAnimator.AnimatorListener() {

@Overridepublic voidonAnimationStart(Animator animation) {

}

@Overridepublic voidonAnimationEnd(Animator animation) {//动画执行完毕后修改TextView的值

mFadeinoutTv.setText("124");

}

@Overridepublic voidonAnimationCancel(Animator animation) {

}

@Overridepublic voidonAnimationRepeat(Animator animation) {

}

});

mFadeOutObjectAnimator.start();

以上代码大概意思为将TextView以一定规律向上从中心点向上移动150像素,同时将TextView的不透明度从1慢慢变到0,达到TextView淡出的效果。效果如下图:

我们再来看看淡入的实现:

privateObjectAnimator mFadeInObjectAnimator;//由于是淡入,从底部向中心点移动,移动距离为150像素

mFadeInObjectAnimator = ObjectAnimator.ofFloat(mFadeinoutTv, "translationY", 150, 0);//动画执行时间设置为500毫秒

mFadeInObjectAnimator.setDuration(500);//动画推迟100毫秒执行

mFadeInObjectAnimator.setStartDelay(100);

mFadeInObjectAnimator.addUpdateListener(newValueAnimator.AnimatorUpdateListener() {

@Overridepublic voidonAnimationUpdate(ValueAnimator animation) {//当前动画时间点的动画值

float value = (float) animation.getAnimatedValue();//动画值在150-0之间变化,而alpha在0-1之间变化,故而alue/150

mFadeinoutTv.setAlpha(1 - value/150);

}

});

mFadeInObjectAnimator.start();

以上代码大概意思为将TextView以一定规律从底部向中心点移动,同时将TextView的不透明度从0慢慢变到1,达到TextView淡入的效果。效果如下图:

好了,现在淡入、淡出两个动画都实现了,只要组合起来执行便可,如下代码:

//AnimatorSet是可以让几个动画组合在一起执行的类

privateAnimatorSet mAnimatorSet;

mAnimatorSet= newAnimatorSet();//先淡出再淡入

mAnimatorSet.play(mFadeOutObjectAnimator).before(mFadeInObjectAnimator);

mAnimatorSet.start();

效果图:

源码:

原文:/tyrion/p/4337630.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。