LayoutAnimation 可以用来为ViewGroup添加动画,并按照预定的顺序把一个动画(或者动画集合)应用到ViewGroup的第一个子View 中。

可以使用LayoutAnimationController 来指定一个应用到View组中的每一个动画(或动画集合)。ViewGroup中包含的每一个View都将应用到这个相同的动画,但可以使用LayoutAnimationController来指定每一个View的顺序和起始时间。

1、创建布局动画

要创建一个新的布局动画,首先要定义一个将应用于每个子View的动画,然后,在代码中或者作为外部动画资源,创建一个新的LayoutAnimation,它引用了要应用的动画并定义了应用它的顺序和时刻安排。

1.1、定义一个将应用于每个子View的动画 popin.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/accelerate_interpolator"><scaleandroid:duration="2000"android:fromXScale="0.0"android:fromYScale="0.0"android:pivotX="50%"android:pivotY="50%"android:toXScale="1.0"android:toYScale="1.0" /></set>

1.2、定义一个LayoutAnimation   popinlayout.xml

<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"android:delay="0.5"android:animationOrder="reverse"android:animation="@anim/popin"></layoutAnimation>

其中:

android:animationOrder="reverse"指定ViewGroup中的每一个子View应用动画的顺序,这里指定为“逆序”;

android:animation="@anim/popin"指定要在每一个View中的应用的动画,这里为1.1中的定义的动画资源;

2、使用布局动画

一旦定义了一个布局动画,就可以使用代码或者布局XML 资源将其应用到一个ViewGroup中。

2.1、在XML中使用,通过在布局定义中使用android:layoutAnimation="@anim/popinlayout"来完成

如下为 LinearLayout应用上述布局动画

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity"android:layoutAnimation="@anim/popinlayout"><Buttonandroid:id="@+id/start_anim_bt"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/start_anim_bt_txt"/><TextViewandroid:id="@+id/info_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /><ImageViewandroid:id="@+id/img_iv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/image2"/></LinearLayout>

2.2、在代码中设置一个布局动画,可以调用ViewGroup的setLayoutAnimation,并给它传递所希望应用到的LayoutAnimation对象的引用。

通常情况下,布局动画会在ViewGroup第一次进行布局的时候执行一次。可以通过对ViewGroup调用scheduleLayoutAnimation来强制它再次执行,然后当ViewGroup下次被布局的时候,这个动画就会再次执行。

布局动画也支持动画监听器。

<span style="white-space:pre">  </span>//得到要应用动画的ViewGrouplinearlayout_vg=(LinearLayout)findViewById(R.id.linearlayout_vg);//得到在res/anim/popin.xml文件中定义的动画资源Animation myAnimation= AnimationUtils.loadAnimation(MainActivity.this, R.anim.popin);LayoutAnimationController layoutAnimationController=new LayoutAnimationController(myAnimation);layoutAnimationController.setDelay(0.5f);//设置ViewGroup中每一个子View应用动画的顺序layoutAnimationController.setOrder(LayoutAnimationController.ORDER_REVERSE);//布局动画也支持动画监听器linearlayout_vg.setLayoutAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {Toast.makeText(MainActivity.this,"动画开始了。。。",Toast.LENGTH_SHORT).show();}@Overridepublic void onAnimationEnd(Animation animation) {Toast.makeText(MainActivity.this,"动画结束了。。。",Toast.LENGTH_SHORT).show();}@Overridepublic void onAnimationRepeat(Animation animation) {Toast.makeText(MainActivity.this,"动画重复执行了。。。",Toast.LENGTH_SHORT).show();}});//当ViewGroup被布局的时候,强制该动画再次执行linearlayout_vg.scheduleLayoutAnimation();//在ViewGroup中应用布局动画linearlayout_vg.setLayoutAnimation(layoutAnimationController);

Android 动画(一)---布局动画相关推荐

  1. Android RecyclerView网格布局动画

    In this tutorial, we'll learn how to create animation for a RecyclerView in which elements are displ ...

  2. android动画之布局动画,Android动画--布局动画 LayoutAnimation

    LayoutTransition 相关的属性值 APPEARING:当一个View在ViewGroup中出现时,对此View设置的动画 CHANGE_APPEARING:当一个View在ViewGro ...

  3. Android动画效果之自定义ViewGroup添加布局动画

    Android动画效果之自定义ViewGroup添加布局动画 前言: 前面几篇文章介绍了补间动画.逐帧动画.属性动画,大部分都是针对View来实现的动画,那么该如何为了一个ViewGroup添加动画呢 ...

  4. 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...

  5. react-native系列(13)动画篇:Animated动画库和LayoutAnimation布局动画详解

    动画概念了解 流畅.有意义的动画对于APP户体验来说是非常重要的,用RN开发实现动画有三种方法: requestAnimationFrame:称为帧动画,原理是通过同步浏览器的刷新频率不断重新渲染界面 ...

  6. Android动画之视图动画和属性动画

    Android 动画分为两大类,分别是视图动画(View Animation)和属性动画(Property Animation).对于这两种动画,都能够使用xml和代码的形式定义动画. 注:布局动画相 ...

  7. android ui动画效果怎么做,AndroidUI 布局动画-为列表添加布局动画效果

    新建一个Android project ,使MainActivity 继承自 ListActivity: public class MainActivity extends ListActivity ...

  8. Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition

    Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...

  9. android 卡片放大变详情页,ConstraintLayout动画实现布局卡片式滑动放大缩放

    ConstraintLayout(约束布局)是Android Studio 2.2中主要的新增功能之一,Android studio升级到2.3版本之后,不管是新建Activity或fragment, ...

最新文章

  1. oracle 11g asm 磁盘组兼容属性
  2. 1.3 用神经网络进行监督学习-深度学习-Stanford吴恩达教授
  3. 基于GRNN神经网络的数字预失真系统的FPGA实现
  4. mongodb Install the MongoDB service
  5. tampermonkey参数
  6. select * 映射错误_高性能IO模型分析-浅析Select、Poll、Epoll机制(三)
  7. 作者:杨婧(1983-),女,博士,中国科学院计算技术研究所工程师。
  8. 关于PF_INET和AF_INET的区别
  9. jsp java代码报错,求助!JSP代码中调java服务出参返回正常 weblogic报错BEA-101017
  10. 番茄todo电脑版_TODO清单|高效时间管理 支持多平台多设备同步 解锁VIP
  11. Atiitt 使用java语言编写sql函数或存储过程
  12. 智能硬件产品开发分享
  13. MFC界面开发帮助文档:BCG可视化设计器使用指南
  14. sql列转行逗号连接_SQL 拼接字符串 列转行 | 学步园
  15. java 分布式任务_分布式定时任务(一)
  16. Apache日志格式与配置
  17. 小程序/CSS的text-decoration属性
  18. android游戏推广,安卓APP游戏首发市场渠道整理
  19. keras 中fit 和 evaluate中参数 verbose 详解
  20. PPT——地图快速获取(各地区域)

热门文章

  1. node.js跨域问题
  2. 计时器延迟 NSTimer和CADisplaylink GCD中的延迟
  3. leetcode - Balanced Binary Tree
  4. 关于调试windows services的方法
  5. 测试站点写入文件权限代码下载
  6. C++中的string类型转换为int类型
  7. openstack--1--基础环境搭建
  8. Zmodem transfer canceled by remote side
  9. seo技巧-2015/10/05
  10. MvcPager帮助文档 - MvcAjaxOptions 类