View动画另一些使用场景--LayoutAnimation和Activity之间的切换效果

LayoutAnimation:

          1)作用:为ViewGroup提供一个动画,这样在它的子view出场时都会具备这样的效果

          2)效果:比如为listView添加一个layoutAnimation,那么在listView显示的时候它的item都会以一样的动画显示出来

          3)使用对象:viewGroup,一般都在listView使用的比较多

给ViewGroup加上LayoutAnimation步骤:

1)先在xml文件中创建一个动画集用来显示viewGroup中子view的出场效果

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:shareInterpolator="false" >
    
    <alpha
        android:fromAlpha="0.5"
        android:toAlpha="1.0" />

    <translate
        android:fromXDelta="500"
        android:toXDelta="0" />

</set>


 

2)在xml文件中设置LayoutAnimation的属性

<?xml version="1.0" encoding="UTF-8"?>
<!-- animation:就是子view要显示的动画
	animationOrder:是viewgroup中子view的出场顺序,一共三种,normal:正常的从上到下
													reverse:倒序,从下到上
													random:随机顺序 
	delay:子类动画时间间隔,值可以为百分比和float型,这个间隔=animation中动画的during*delay中的数值						
							-->
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/layout_animation"
    android:animationOrder="normal"
    android:delay="0.5" />


3)在ViewGroup的xml文件中设置属性

<ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layoutAnimation="@anim/anim_layout" >
    </ListView>

除了可以在xml文件中定义外,还可以在java代码中定义,至于在java代码中定义这里就不阐述啦,读者可自己去试验一下

接下来说一下Avtivity之间的切换效果:

activity有自己默认的切换效果,但我们也可以自定义切换效果,主要用到overridePendingTransition(int enterAnim , int exitAnim)

具体实现也有几个步骤:

1)先定义两个动画效果:进入和出去的效果

<?xml version="1.0" encoding="utf-8"?>
<!-- 进入的效果 -->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="-100%p"
    android:fromYDelta="0"
    android:toXDelta="0"
    android:toYDelta="0"
    android:duration="500" />

 

<?xml version="1.0" encoding="utf-8"?>
<!-- 出去的效果 -->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:fromYDelta="0"
    android:toXDelta="100%p"
    android:toYDelta="0"
    android:duration="500" />


2)调用overridePendingTransition(),切记,这个方法一定要在finish或者startActivity之后调用否则无效

Intent intent = new Intent(this, SecondActivity.class);
		startActivity(intent);
		overridePendingTransition(R.anim.pre_in, R.anim.pre_out);


 

@Override
	public void finish() {
		super.finish();
		overridePendingTransition(R.anim.pre_out, R.anim.pre_in);
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值