Android 动画(一)---布局动画
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 动画(一)---布局动画相关推荐
- Android RecyclerView网格布局动画
In this tutorial, we'll learn how to create animation for a RecyclerView in which elements are displ ...
- android动画之布局动画,Android动画--布局动画 LayoutAnimation
LayoutTransition 相关的属性值 APPEARING:当一个View在ViewGroup中出现时,对此View设置的动画 CHANGE_APPEARING:当一个View在ViewGro ...
- Android动画效果之自定义ViewGroup添加布局动画
Android动画效果之自定义ViewGroup添加布局动画 前言: 前面几篇文章介绍了补间动画.逐帧动画.属性动画,大部分都是针对View来实现的动画,那么该如何为了一个ViewGroup添加动画呢 ...
- 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...
- react-native系列(13)动画篇:Animated动画库和LayoutAnimation布局动画详解
动画概念了解 流畅.有意义的动画对于APP户体验来说是非常重要的,用RN开发实现动画有三种方法: requestAnimationFrame:称为帧动画,原理是通过同步浏览器的刷新频率不断重新渲染界面 ...
- Android动画之视图动画和属性动画
Android 动画分为两大类,分别是视图动画(View Animation)和属性动画(Property Animation).对于这两种动画,都能够使用xml和代码的形式定义动画. 注:布局动画相 ...
- android ui动画效果怎么做,AndroidUI 布局动画-为列表添加布局动画效果
新建一个Android project ,使MainActivity 继承自 ListActivity: public class MainActivity extends ListActivity ...
- Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition
Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...
- android 卡片放大变详情页,ConstraintLayout动画实现布局卡片式滑动放大缩放
ConstraintLayout(约束布局)是Android Studio 2.2中主要的新增功能之一,Android studio升级到2.3版本之后,不管是新建Activity或fragment, ...
最新文章
- oracle 11g asm 磁盘组兼容属性
- 1.3 用神经网络进行监督学习-深度学习-Stanford吴恩达教授
- 基于GRNN神经网络的数字预失真系统的FPGA实现
- mongodb Install the MongoDB service
- tampermonkey参数
- select * 映射错误_高性能IO模型分析-浅析Select、Poll、Epoll机制(三)
- 作者:杨婧(1983-),女,博士,中国科学院计算技术研究所工程师。
- 关于PF_INET和AF_INET的区别
- jsp java代码报错,求助!JSP代码中调java服务出参返回正常 weblogic报错BEA-101017
- 番茄todo电脑版_TODO清单|高效时间管理 支持多平台多设备同步 解锁VIP
- Atiitt 使用java语言编写sql函数或存储过程
- 智能硬件产品开发分享
- MFC界面开发帮助文档:BCG可视化设计器使用指南
- sql列转行逗号连接_SQL 拼接字符串 列转行 | 学步园
- java 分布式任务_分布式定时任务(一)
- Apache日志格式与配置
- 小程序/CSS的text-decoration属性
- android游戏推广,安卓APP游戏首发市场渠道整理
- keras 中fit 和 evaluate中参数 verbose 详解
- PPT——地图快速获取(各地区域)