为了更好的说明Android动画的淡入淡出效果,这里以一个场景为例: 界面上有两个View 控件,两个View交替显示,当一个View淡入显示,另一个View淡出不可见。

我们把当前要显示的View叫showView, 要隐藏不可见的view叫hideView。

 final View showView = findViewById(***)
final View hideView = findViewById(***)

首先说淡入显示,既然要显示,那么View要设置为可见,要实现淡入的效果,就需要将透明度先设置为0

showView.setAlpha(0f);
showView.setVisibility(View.VISIBLE);

接下来就要调用showView.animate()方法来实现动画效果,设置最终的透明度为1。就可以达到不可见->模糊->完全显示

   showView.animate()
.alpha(1f)
.setDuration(5000)
.setListener(null);

setDuration是设置动画的持续时间,这里设置的是5秒。 setListener这里先缓一缓,最后我会说明这个方法的作用。

这样showView的淡入效果就实现了,但是同时也必须在同一时间来完成hideView的淡出隐藏,否则两个view就重叠了。

知道如何实现淡入,也就知道如何实现淡出了 - 将透明度由1变到0,最后将hideView设为不可见(在onAnimationEnd事件中设置), 调用hideView.animate()来实现动画效果。就可以达到显示->模糊->完全不可见

 hideView.animate()
.alpha(0f)
.setDuration(mShortAnimationDuration)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
hideView.setVisibility(View.GONE);
}
});

好,目前为止,淡入淡出的效果已经实现,但是相信有细心的童鞋会发现如下细节

1 对于showView, 是先调用showView.setVisibility(View.VISIBLE)设置为可见, 然后才调用showView.animate()

对于hideView, 是先调用 hideView.animate(),最后在onAnimationEnd事件中调用hideView.setVisibility(View.GONE);设置为不可见
2 showView为什么要调用setListener(null), 这跟我文章开头提到的场景有关,因为我们要实现的是两个View交替淡入淡出显示,所以当前的showView就是上一次的hideView,而hideView是设置了listener了,并且实现的是设置view为不可见,所以必须清掉。

Android动画之淡入淡出的更多相关文章

  1. Android 四种简单的动画(淡入淡出、旋转、移动、缩放效果)

    最近在Android开发当中,用到的动画效果. public void onClick(View arg0) { // TODO 自动生成的方法存根 switch (arg0.getId()) { c ...

  2. jQuery-4.动画篇---淡入淡出效果

    jQuery中淡出动画fadeOut 让元素在页面不可见,常用的办法就是通过设置样式的display:none.除此之外还可以一些类似的办法可以达到这个目的.这里要提一个透明度的方法,设置元素透明度为 ...

  3. JQuery动画之淡入淡出动画

    1. 淡入动画 1.1 不带参数的淡入动画 格式: $(selector).fadeIn(); 示例代码: <!doctype html> <html lang="en&q ...

  4. JQuery--基础动画、滑动动画、淡入淡出动画、自定义动画

    /** * [JQ基础动画] * show() 显示 * hide() 隐藏 * toggle() 切换 * 默认无动画,如果要产生动画 * 在括号内,添加毫秒数,可产生动画和控制动画的快慢 * * ...

  5. jquery鼠标键盘悬停事件,形变动画和淡入淡出

    鼠标和键盘悬停 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  6. Javascript-- jQuery动画篇(淡入淡出效果)

    淡入淡出效果 jQuery 提供了下面几种方法可以实现显示的淡入淡出效果: fadeIn() fadeOut() fadeToggle() fadeTo() fadeIn()方法 fadeIn()实现 ...

  7. android 动画总结

    以下博文讲解比较详细,可查阅: http://www.360doc.com/content/13/0102/22/6541311_257754535.shtml 几个关键属性: setRepeatCo ...

  8. Android面试收集录16 Android动画总结

    一.Android 动画分类 总的来说,Android动画可以分为两类,最初的传统动画和Android3.0 之后出现的属性动画: 传统动画又包括 帧动画(Frame Animation)和补间动画( ...

  9. [Android]异步加载图片,内存缓存,文件缓存,imageview显示图片时增加淡入淡出动画

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3574131.html  这个可以实现ImageView异步加载 ...

随机推荐

  1. cxf webservice简单应用

    Server端 server部署到一个端口号为80的tomcat中 CXFController.java package com.lwj.controller; import java.io.IOEx ...

  2. C#中的简单工厂和单例

    下面首先来说说简单工厂 举个例子: 首先是父类 public abstract class Pizza { public abstract string Info(); } } 子类 public c ...

  3. 利用JS生成01010101……长度可控的序列

    function ab(d){ var a = []; var x = 1 ; for (var i = 0; i < d; i++) { if (x == 0) { x = x + 1; } ...

  4. iOS应用程序生命周期(前后台切换,应用的各种状态)详解

    http://blog.csdn.net/totogo2010/article/details/8048652/

  5. TID大会学习心得之敏捷软件架构-微服务

    敏捷微服务构建 王威: TW咨询师.架构转型教练.敏捷技术教练 敏捷的目标 敏捷的目标是提升效率?降低成本?减员增效? 敏捷:关注价值.快速反馈.快速响应.其的目标是提升响应力,响应力的提升不一定会提 ...

  6. method

  7. iOS:崩溃统计工具Crashlytics的使用

    一.介绍 随着苹果在世界火热起来,移动端app的开发如火如荼,同时催生出了一批对app进行统计的开发工具,诸如:国内的友盟统计.国外的Flurry移动端统计.国外的Crashlytics统计等,Cra ...

  8. Centos6 换源

    #主要是为了提高安装速度以及epel中自带源众多木有的软件. #Author wood_man #2016.06.01 v 2.0 1. 测试环境 VMware 10.0    CentOS rele ...

  9. 在 shell 脚本获取 ip、数字转换等网络操作

    在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...

  10. Windows Server 2008 R2安装子域控制器

    一.实验网络拓扑图: 二.实验说明: 子域控制器安装前需要先把主域控制器安装好,然后子域控制器的DNS先指向主域控制器的IP地址 192.168.10.30,主域控制器委派DNS给子域控制器后再把子域 ...