android动画(3)layout动画,layoutChanged动画及算定义它,ListViewActivity的Layout动画(代码和xm配置两种实现l)
1.layout切换动画
代码:
本示例是fragment切换.在它的oncreateView中
- public class LayoutAnimationFrgmt extends Fragment {
- <span style="white-space:pre"> </span>@Override
- <span style="white-space:pre"> </span>public View onCreateView(LayoutInflater inflater, ViewGroup container,
- <span style="white-space:pre"> </span>Bundle savedInstanceState) {
- <span style="white-space:pre"> </span>super.onCreateView(inflater, container, savedInstanceState);
- <span style="white-space:pre"> </span>// TODO Auto-generated method stub
- <span style="white-space:pre"> </span>RelativeLayout rl = (RelativeLayout) inflater.inflate(R.layout.fragment_layout_animation, container,
- <span style="white-space:pre"> </span>false);
- <span style="white-space:pre"> </span>
- <span style="white-space:pre"> </span>ScaleAnimation sa = new ScaleAnimation(0,1,0,1);
- <span style="white-space:pre"> </span>sa.setDuration(350);
- <span style="white-space:pre"> </span>LayoutAnimationController lac = new LayoutAnimationController(sa,0.5f);//0.5f是第后续控件的间隔
- <span style="white-space:pre"> </span>lac.setOrder(LayoutAnimationController.ORDER_REVERSE);//设置动画方向,ORDER_REVERSE是反向
- <span style="white-space:pre"> </span>rl.setLayoutAnimation(lac);
- <span style="white-space:pre"> </span>return rl;
- <span style="white-space:pre"> </span>}
- }
2.layout内容变化时的动画
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:id="@+id/fragment_layout_changed_animation"
- <span style="color:#ff0000;">android:animateLayoutChanges="true"</span>>
- <TextView
- android:id="@+id/flatv"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:text="@string/add_button" />
- </RelativeLayout>
2.2 自定义layoutChanged动画
- public class LayoutChangedAnimationFrgmt extends Fragment implements OnClickListener {
- private RelativeLayout rl;
- private TextView tv;
- LayoutTransition mTransition;
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreateView(inflater, container, savedInstanceState);
- rl = (RelativeLayout) inflater.inflate(R.layout.fragment_layout_changed_animation, container,false);
- mTransition = new LayoutTransition();
- rl.setLayoutTransition(mTransition);
- <span style="color:#ff0000;">setupCustomAnimations</span>();//初始化动画
- tv = (TextView) rl.findViewById(R.id.flatv);
- return rl;
- }
- // LayoutTransition 生成自定义动画
- private void <span style="color:#ff0000;">setupCustomAnimations</span>() {
- // 动画:CHANGE_APPEARING
- // Changing while Adding
- PropertyValuesHolder pvhLeft = PropertyValuesHolder.ofInt("left", 0, 1);
- PropertyValuesHolder pvhTop = PropertyValuesHolder.ofInt("top", 0, 1);
- PropertyValuesHolder pvhRight = PropertyValuesHolder.ofInt("right", 0,
- 1);
- PropertyValuesHolder pvhBottom = PropertyValuesHolder.ofInt("bottom",
- 0, 1);
- PropertyValuesHolder pvhScaleX = PropertyValuesHolder.ofFloat("scaleX",
- 1f, 0f, 1f);
- PropertyValuesHolder pvhScaleY = PropertyValuesHolder.ofFloat("scaleY",
- 1f, 0f, 1f);
- final ObjectAnimator changeIn = ObjectAnimator.ofPropertyValuesHolder(
- this, pvhLeft, pvhTop, pvhRight, pvhBottom, pvhScaleX,
- pvhScaleY).setDuration(
- mTransition.getDuration(LayoutTransition.CHANGE_APPEARING));
- mTransition.setAnimator(LayoutTransition.CHANGE_APPEARING, changeIn);
- changeIn.addListener(new AnimatorListenerAdapter() {
- public void onAnimationEnd(Animator anim) {
- View view = (View) ((ObjectAnimator) anim).getTarget();
- // View也支持此种动画执行方式了
- view.setScaleX(1f);
- view.setScaleY(1f);
- }
- });
- // 动画:CHANGE_DISAPPEARING
- // Changing while Removing
- Keyframe kf0 = Keyframe.ofFloat(0f, 0f);
- Keyframe kf1 = Keyframe.ofFloat(.9999f, 360f);
- Keyframe kf2 = Keyframe.ofFloat(1f, 0f);
- PropertyValuesHolder pvhRotation = PropertyValuesHolder.ofKeyframe(
- "rotation", kf0, kf1, kf2);
- final ObjectAnimator changeOut = ObjectAnimator
- .ofPropertyValuesHolder(this, pvhLeft, pvhTop, pvhRight,
- pvhBottom, pvhRotation)
- .setDuration(
- mTransition
- .getDuration(LayoutTransition.CHANGE_DISAPPEARING));
- mTransition
- .setAnimator(LayoutTransition.CHANGE_DISAPPEARING, changeOut);
- changeOut.addListener(new AnimatorListenerAdapter() {
- public void onAnimationEnd(Animator anim) {
- View view = (View) ((ObjectAnimator) anim).getTarget();
- view.setRotation(0f);
- }
- });
- // 动画:APPEARING
- // Adding
- ObjectAnimator animIn = ObjectAnimator.ofFloat(null, "rotationY", 90f,
- 0f).setDuration(
- mTransition.getDuration(LayoutTransition.APPEARING));
- mTransition.setAnimator(LayoutTransition.APPEARING, animIn);
- animIn.addListener(new AnimatorListenerAdapter() {
- public void onAnimationEnd(Animator anim) {
- View view = (View) ((ObjectAnimator) anim).getTarget();
- view.setRotationY(0f);
- }
- });
- // 动画:DISAPPEARING
- // Removing
- ObjectAnimator animOut = ObjectAnimator.ofFloat(null, "rotationX", 0f,
- 90f).setDuration(
- mTransition.getDuration(LayoutTransition.DISAPPEARING));
- mTransition.setAnimator(LayoutTransition.DISAPPEARING, animOut);
- animOut.addListener(new AnimatorListenerAdapter() {
- public void onAnimationEnd(Animator anim) {
- View view = (View) ((ObjectAnimator) anim).getTarget();
- view.setRotationX(0f);
- }
- });
- }//其它方法略...
- }
3.ListViewLayout的动画(用代码和xml配置两个方法实现)
- public class LayoutAnimInListViewCodeAty extends ListActivity {
- private ArrayAdapter<String> adapter;
- private String [] datas;
- private LayoutAnimationController lac;
- private TranslateAnimation ta;
- private ScaleAnimation sa;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- // setContentView(R.layout.activity_layout_list_view);ListActivity不用它.
- datas = new String[]{"hei","bai","hooo","lvv","lann"};
- adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,datas);
- setListAdapter(adapter);
- ta = new TranslateAnimation(0,1,0,1);
- sa = new ScaleAnimation(0,1,0,1);
- sa.setDuration(1000);
- // lac = new LayoutAnimationController(ta,0.5f);
- lac = new LayoutAnimationController(sa,0.5f);
- getListView().setLayoutAnimation(lac);
- }
- <span style="white-space:pre"> </span>//其它略...
- }
3.2 xmls配置文件实现
- public class LayoutAnimInListViewXmlAty extends ListActivity {
- private ArrayAdapter<String> adapter;
- private String[] datas;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_layout_anim_in_list_xml_aty);
- datas = new String[] { "hei", "bai", "hooo", "lvv", "lann" };
- adapter = new ArrayAdapter<String>(this,
- android.R.layout.simple_list_item_1, datas);
- setListAdapter(adapter);
- }
- @Override
aty对应的布局xml: 注意 android:id="@android:id/list" 是必需
- <RelativeLayout 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: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="com.example.layoutanimation.LayoutAnimInListViewXmlAty" >
- <ListView
- <span style="font-size:24px;color:#ff0000;">android:id="@android:id/list"</span>
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- <span style="color:#ff0000;">android:layoutAnimation="@anim/listview_anim"</span> >
- </ListView>
- </RelativeLayout>
layout动画配置文件:listview_anim.xml
- <?xml version="1.0" encoding="utf-8"?>
- <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
- android:animation="@anim/scale_xml_anim"
- android:delay="0.5" >
- </layoutAnimation>
具体动画效果配置文件:scale_xml_anim.xml
- <?xml version="1.0" encoding="utf-8"?>
- <scale xmlns:android="http://schemas.android.com/apk/res/android"
- android:duration="1000"
- android:fromXScale="0"
- android:fromYScale="0"
- android:toXScale="1"
- android:toYScale="1" >
- </scale>
android动画(3)layout动画,layoutChanged动画及算定义它,ListViewActivity的Layout动画(代码和xm配置两种实现l)的更多相关文章
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- android中的OnClickListener两种实现方式
android的activity点击事件中,通过OnClickListener来实现,要实现点击事件有两种方式 1.通过定义一个OnClickListener的内部类来实现 The example b ...
- Android仿腾讯手机管家实现桌面悬浮窗小火箭发射的动画效果
功能分析: 1.小火箭游离在activity之外,不依附于任何activity,不管activity是否开启,不影响小火箭的代码逻辑,所以小火箭的代码逻辑是要写在服务中: 2.小火箭挂载在手机窗体之上 ...
- Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果)
Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果) 首句依然是那句老话,你懂得! finddreams :(http://blog.csdn.net/finddr ...
- android位移动画的两种实现方式
在android开发,我们会常常使用到位移动画,普通情况下位移动画有两种实现方式.一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法: 纯Java代码实现: / ...
- android旋转动画的两种实现方式
在android开发,我们会常常使用到旋转动画,普通情况下旋转动画有两种实现方式,一种是直接通过java代码去实现,第二种是通过配置文件实现动画.以下是两种动画的基本是用法: 纯Java代码实现: / ...
- Android系统移植与调试之------->如何修改开机动画的两种方式剖析
首先,我们先来分析一下源码: frameworks/base/cmds/bootanimation/BootAnimation.cpp 首先看一下定义的常量: BootAnimation::ready ...
- android动画(1)各种动画属性表,简单代码,xml配置
1.动画的属性表 1.1 常用属性 它们可以通过代码setXXX,getXXX,也可在xml中配置. 属性[类型] 功能 备注 Duration[long] 属性为动画持续时间 时间以毫秒为单位 fi ...
- android缩放动画的两种实现方法
在android开发.我们会常常使用到缩放动画,普通情况下缩放动画有两种实现方式.一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法: Java代码实现: // ...
随机推荐
- 火焰灯menu修改之后,可以实现数遍点击小方块停留在当前页面
下载地址:http://www.cnblogs.com/RightDear/admin/Files.aspx 调用方式,传入一个参数 首页传入0,关于联盟传入1,产品展示传入2,依此类推 <sc ...
- yum lock
状态 :睡眠中,进程ID:18439Another app is currently holding the yum lock; waiting for it to exit... 另一个应用程序是: ...
- 开启 J2EE(六)— Servlet之Filter具体解释及乱码处理实例
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/akkzhjj/article/details/36471477 定义和功能 Filter:过滤器,它 ...
- vscode——配置终端集成bash和cmd
前言 配置后bash和cmd是集成的,输入bash回车则进入bash,输入cmd回车则进入cmd 步骤 首先肯定是需要打开我们的vscode咯~ 进入终端设置 配置shell路径 根据自己的系统来复制 ...
- Bug不能重现的原因分析及其对策
摘 要:本文简要分析了无法重现的Bug的可能产生原因,包括环境不一致.缺少最准确的描述和浏览器的不当设置.针对这些原因,本文给出了相应的对策.通过这些措施,可以重现许多以前认为不可重现的Bug. ...
- Intel® Media SDK Media Samples Linux 学习笔记(转)
最近折腾intel media sdk,主要硬件平台是在HD4600的核显上进行测试,intel media sdk是intel提供的一种基于核显的硬件编解码的解决方案,之前已经有使用ffmpeg进行 ...
- UVA-10827(前缀和降维)
题意: 给一个n*n的正方形,第一行和最后一行粘在一块,第一列和最后一列粘在一块,求这个环面上的最大的子矩形; 思路: 直接暴力是O(n^6)的复杂度,可以把前缀和求出来,这样就可以只用枚举四条边界就 ...
- IOS AutoLayout 代码实现约束—VFL
在autolayout下,尽管使用IB来拖放控件,但仍然避免不了用代码来创建控件,这是约束需要代码来实现. IOS 提供了两种添加约束的方法 第一种: +(instancetype)constrain ...
- Superprime Rib
链接 分析:满足题目条件的必然是1,2,3,5,7,9这几个数字的组合,DFS按位进行即可,边组合边判断是否合法. /* PROB:sprime ID:wanghan LANG:C++ */ #inc ...
- NOIP2004题解
传送门 考查题型 dp 搜索 模拟 数据结构堆 贪心 T1 津津的储蓄计划 题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和 ...