TextView动画 - 淡入,等待,淡出

Guy*_*hal 18 android textview fadeout fadein android-animation

我正在制作一个图片库应用程序.我目前有一个带有文本视图的imageview.目前它只是半透明的.我想让它淡入,等待3秒,然后淡出90%.引起关注或加载新图片将使其重复循环.我已经阅读了十几页,并尝试了一些事情,没有成功.我得到的只是淡入淡出并立即淡出

Guy*_*hal 48

protected AlphaAnimation fadeIn = new AlphaAnimation(0.0f , 1.0f ) ; 
protected AlphaAnimation fadeOut = new AlphaAnimation( 1.0f , 0.0f ) ; 
txtView.startAnimation(fadeIn);
txtView.startAnimation(fadeOut);
fadeIn.setDuration(1200);
fadeIn.setFillAfter(true);
fadeOut.setDuration(1200);
fadeOut.setFillAfter(true);
fadeOut.setStartOffset(4200+fadeIn.getStartOffset());
Run Code Online (Sandbox Code Playgroud)

适用于白色背景.否则,您需要在实例化AlphaAnimation类时切换值.像这样:

AlphaAnimation fadeIn = new AlphaAnimation( 1.0f , 0.0f ); 
AlphaAnimation fadeOut = new AlphaAnimation(0.0f , 1.0f ); 
Run Code Online (Sandbox Code Playgroud)

这适用于黑色背景和白色文本颜色.


小智 10

Guy Cothal 的回答的 Kotlin 扩展函数:

inline fun View.fadeIn(durationMillis: Long = 250) {
    this.startAnimation(AlphaAnimation(0F, 1F).apply {
        duration = durationMillis
        fillAfter = true
    })
}

inline fun View.fadeOut(durationMillis: Long = 250) {
    this.startAnimation(AlphaAnimation(1F, 0F).apply {
        duration = durationMillis
        fillAfter = true
    })
}
Run Code Online (Sandbox Code Playgroud)


Ros*_*ses 6

这是我在我的项目中用于在TextViews上循环淡入/淡出动画的解决方案:

private void setUpFadeAnimation(final TextView textView) {
    // Start from 0.1f if you desire 90% fade animation
    final Animation fadeIn = new AlphaAnimation(0.0f, 1.0f);
    fadeIn.setDuration(1000);
    fadeIn.setStartOffset(3000);
    // End to 0.1f if you desire 90% fade animation
    final Animation fadeOut = new AlphaAnimation(1.0f, 0.0f);
    fadeOut.setDuration(1000);
    fadeOut.setStartOffset(3000);

    fadeIn.setAnimationListener(new Animation.AnimationListener(){
        @Override
        public void onAnimationEnd(Animation arg0) {
            // start fadeOut when fadeIn ends (continue)
            textView.startAnimation(fadeOut);
        }

        @Override
        public void onAnimationRepeat(Animation arg0) {
        }

        @Override
        public void onAnimationStart(Animation arg0) {
        }
    });

    fadeOut.setAnimationListener(new Animation.AnimationListener(){
        @Override
        public void onAnimationEnd(Animation arg0) {
            // start fadeIn when fadeOut ends (repeat)
            textView.startAnimation(fadeIn);
        }

        @Override
        public void onAnimationRepeat(Animation arg0) {
        }

        @Override
        public void onAnimationStart(Animation arg0) {
        }
    });

    textView.startAnimation(fadeOut);
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


小智 4

您可以使用额外的动画对象(不会修改其alpha)来防止即时淡出,为淡入效果设置animationListener并在淡入的onanimationEnd中启动额外的动画对象,然后开始额外动画对象的动画结束时淡出,请尝试下面的链接,它会有所帮助..

文本视图的自动淡入淡出效果