TextView淡入淡出效果

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

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

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

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

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

首先,看淡出的实现:

private ObjectAnimator mFadeOutObjectAnimator;
//由于淡出,是向上移动,坐标为负,这里设定向上移动150个像素
mFadeOutObjectAnimator = ObjectAnimator.ofFloat(mFadeinoutTv, "translationY", 0, -150);
//动画执行时间设定为500毫秒
mFadeOutObjectAnimator.setDuration(500);
mFadeOutObjectAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                //当前动画时间点的动画值,在0到-150之间
                float value = (float) animation.getAnimatedValue();
                //由于不透明度取值为0-1,故而除以150,value/150取值在-1到0之间
                mFadeinoutTv.setAlpha(1 + value/150);
            }
        });
mFadeOutObjectAnimator.addListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animation) {

            }

            @Override
            public void onAnimationEnd(Animator animation) {
               //动画执行完毕后修改TextView的值
                mFadeinoutTv.setText("124");
            }

            @Override
            public void onAnimationCancel(Animator animation) {

            }

            @Override
            public void onAnimationRepeat(Animator animation) {

            }
        });
mFadeOutObjectAnimator.start();

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

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

private ObjectAnimator mFadeInObjectAnimator;
//由于是淡入,从底部向中心点移动,移动距离为150像素
mFadeInObjectAnimator = ObjectAnimator.ofFloat(mFadeinoutTv, "translationY", 150, 0);
//动画执行时间设置为500毫秒
mFadeInObjectAnimator.setDuration(500);
//动画推迟100毫秒执行
mFadeInObjectAnimator.setStartDelay(100);
mFadeInObjectAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(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是可以让几个动画组合在一起执行的类
private AnimatorSet mAnimatorSet;
mAnimatorSet = new AnimatorSet();
//先淡出再淡入
mAnimatorSet.play(mFadeOutObjectAnimator).before(mFadeInObjectAnimator);
mAnimatorSet.start();

效果图:

源码:

https://github.com/taothreeyears/TextViewFadeInOut

时间: 2024-07-31 06:27:21

TextView淡入淡出效果的相关文章

淡入淡出效果 (jQuery)

1jQuery中淡出动画fadeOut 让元素在页面不可见,常用的办法就是通过设置样式的display:none.除此之外还可以一些类似的办法可以达到这个目的.这里要提一个透明度的方法,设置元素透明度为0,可以让元素不可见,透明度的参数是0~1之间的值,通过改变这个值可以让元素有一个透明度的效果.常见的淡入淡出动画正是这样的原理. fadeOut()函数用于隐藏所有匹配的元素,并带有淡出的过渡动画效果 所谓"淡出"隐藏的,元素是隐藏状态不对作任何改变,元素是可见的,则将其隐藏. .fa

javascript 图片淡入淡出效果 实例源代码

? 1 代码说明:把代码粘贴好之后,需要更改html代码中的图片路径,即可执行成功.<br>后面还有对js代码的详细说明,希望大家好好消化,好好理解.<br><br>html源代码: 1 <head> 2 <title>图片切换</title> 3 <script type="text/javascript" src="图片切换.js"></script> 4 <l

实现淡入淡出效果的组件,继承自JComponent

由于仅贴出代码,供有缘人参考. import java.awt.AlphaComposite; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComponent; import javax.swing.Timer; public abstract cl

(转)winform Form 淡入淡出效果

原文地址:http://blog.csdn.net/a237428367/article/details/5933565 using System.Runtime.InteropServices; public class Win32 { public const Int32 AW_HOR_POSITIVE = 0x00000001; // 从左到右打开窗口 public const Int32 AW_HOR_NEGATIVE = 0x00000002; // 从右到左打开窗口 public c

h5+css3最简单的图片飞入以及淡入淡出效果

正如很多小伙伴们所知道的,楼主最近在开发移动端的响应式布局的自适应页面了,现在分享一个刚写完的小demo html: <!doctype html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-sca

【jQuery】利用淡入淡出效果实现兼容IE6的告警提示

其实我觉得告警提示的话,直接用一个Alert就最好的.开门见山,直接让用户明白你当前系统的意思,关键是Alert这东西就是再破的浏览器都必须兼容,不然你它丫的做毛浏览器啊?但是,在现在越来越觉得Alert不美观,而且开始有"弹窗挺吓人"的思潮,因此,告警提示你必须做得好看一点.在Javascript的透明度的操控比较艰难的前提下,jQuery的简单淡入淡出效果是你的选择.之所以选择jQuery,是因为这东西能够很好地兼容IE6. 一.基本目标 当输入框的输入内容的字符数无论中文与英文大

js淡入淡出效果实例代码

js淡入淡出效果实例代码:现在的网页要求美观平滑,所以很多让元素消失的效果也也需要有一个过渡过程,这样看起来更为平缓美观,本章节提供了一个代码实例,可以轻松的实现让元素淡入淡出效果.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com

淡入淡出效果的js原生实现

淡入淡出效果,在日常项目中经常用到,可惜原生JS没有类似的方法,而有时小的页面并不值得引入一个jQuery库,所以就自己写了一个,已封装, 有用得着的朋友, 可以直接使用. 代码中另附有一个设置元素透明度的方法, 是按IE规则(0~100)设置, 若改成标准设置方法(0.00~1.00), 下面使用时请考虑浮点精确表达差值. 参数说明: fadeIn()与fadeOut()均有三个参数,第一个是事件, 必填; 第二个是淡入淡出速度, 正整数, 大小自己权衡, 可选参数; 第三个, 是指定淡入淡出

jQuery淡入淡出效果

<!DOCTYPE html><html><head><meta charset="utf-8"><title>淡入淡出效果</title><script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script><script>$(document).ready(function()