Android 动画——Layout Animations布局动画
2015-09-21 07:15
543 查看
Layout Animations主要使用LayoutTransition为布局的容器设置动画,当容器中的视图层次发生变化时存在过渡的动画效果。
对应理解:当在ViewGroup容器中视图层次放生改变时,LayoutTransition能够自动的设置过度的动画。在视图容器中为了能够转换,我们通过创建一个ViewGroup对象调用
我们来看一下LayoutTransition的使用:
布局文件:
Activity:
这里使用到了LayoutTransition的四种效果:
APPEARING:当一个View在ViewGroup中出现时,对此View设置的动画
CHANGE_APPEARING:当一个View在ViewGroup中出现时,对此View对其他View位置造成影响,对其他View设置的动画。
DISAPPEARING: 当一个View在ViewGroup中消失时,对此View设置的动画。
CHANGE_DISAPPEARING: 当一个View在ViewGroup中消失时,对此View对其他View位置造成影响,对其他View设置的动画。
CHANGE: 不是由于View出现或消失造成对其他View位置造成影响,然后对其他View设置的动画。
LayoutTransition
This class enables automatic animations on layout changes in ViewGroup objects. To enable transitions for a layout container, create a LayoutTransition object and set it on any ViewGroup by callingsetLayoutTransition(LayoutTransition). This will cause default animations to run whenever items are added to or removed from that container. To specify custom animations, use the setAnimator() method.
对应理解:当在ViewGroup容器中视图层次放生改变时,LayoutTransition能够自动的设置过度的动画。在视图容器中为了能够转换,我们通过创建一个ViewGroup对象调用
setLayoutTransition(LayoutTransition)在ViewGroup设置这个过度动画。我们也可以在视图的添加和删除时通过setAnimator()来设置动画。
我们来看一下LayoutTransition的使用:
LayoutTransition transition = new LayoutTransition();//创建LayoutTransition的对象。 transition.setDuration(3000);//设置添加过度动画显示的时间。 transition.setAnimator(LayoutTransition.APPEARING, AnimatorInflater.loadAnimator(this, R.animator.animator));//添加动画 mGridLayout.setLayoutTransition(transition);//将LayoutTransition添加到ViewGroup容器中。
Layout Animations实例应用
我们在布局中添加一个按钮,通过点击按钮来实现在GridLayout布局中动画形式增加一个按钮,点击添加按钮,按钮会自动删除。布局文件:
<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" tools:context="com.example.administrator.myanimation.LayoutAnimatorActivity"> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="添加按钮"/> <GridLayout android:id="@+id/gridlayout" android:layout_width="match_parent" android:layout_height="match_parent" android:columnCount="5"></GridLayout> </LinearLayout>
Activity:
public class LayoutAnimatorActivity extends Activity { private Button mButtonAdd; private GridLayout mGridLayout; private int count; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_layout_animator); mButtonAdd = (Button) findViewById(R.id.button); mGridLayout = (GridLayout) findViewById(R.id.gridlayout); //设置布局的动画 LayoutTransition transition = new LayoutTransition(); transition.setDuration(1000); transition.setAnimator(LayoutTransition.APPEARING, transition .getAnimator(LayoutTransition.APPEARING)); transition.setAnimator(LayoutTransition.CHANGE_APPEARING, transition.getAnimator(LayoutTransition.CHANGE_APPEARING)); transition.setAnimator(LayoutTransition.DISAPPEARING, transition.getAnimator(LayoutTransition.DISAPPEARING)); transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING, transition.getAnimator(LayoutTransition.CHANGE_DISAPPEARING)); mGridLayout.setLayoutTransition(transition); mButtonAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { count++; final Button button = new Button(LayoutAnimatorActivity.this); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); button.setLayoutParams(params); button.setText(""+count); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mGridLayout.removeView(v); } }); mGridLayout.addView(button); } }); } }
这里使用到了LayoutTransition的四种效果:
APPEARING:当一个View在ViewGroup中出现时,对此View设置的动画
CHANGE_APPEARING:当一个View在ViewGroup中出现时,对此View对其他View位置造成影响,对其他View设置的动画。
DISAPPEARING: 当一个View在ViewGroup中消失时,对此View设置的动画。
CHANGE_DISAPPEARING: 当一个View在ViewGroup中消失时,对此View对其他View位置造成影响,对其他View设置的动画。
CHANGE: 不是由于View出现或消失造成对其他View位置造成影响,然后对其他View设置的动画。
相关文章推荐
- android给未签名的apk签名
- Android:Activity生命周期
- android Spinner控件详解
- Android:Activity & Intent
- Android中GridView使用
- 【Android】本地图片选择(打开媒体库,选择图片)
- Android中Context详解 ---- 你所不知道的Context
- listview增加footer时图片闪动问题
- [OK3354D--System]Android4.2系统安装
- 6 款好用的 PC+Android 同步 GTD 软件
- 6 款好用的 PC+Android 同步 GTD 软件
- 如何在Android开发中测试应用在真机上实验
- android图片的上传、下载和一些缩放操作
- 选Android培训机构,为什么选蜂窝Android培训?
- Android客户端和服务器端交互---数据库
- scrollTo与smoothScrollTo的区别
- android手机无root拷贝数据
- Android三种播放视频的方式(全屏模式的切换)
- Android Studio常用插件
- Android学习博(序)