Android动画的应用

回顾了一下Android动画,下面我们看一看他们有什么使用场景:

一、LayoutAnimation(为ViewGroup指定动画,最常用的就是用在listView上)

anim/anim_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:animation="@anim/alpha_anim"
    android:animationOrder="normal"
    android:delay="0.5" />
其中delay表示子元素开始动画的时间延迟,如果子元素入场动画的时间周期为200ms,那么0.5表示每个子元素都会延迟100ms才会播放入场动画;animationOrder表示子元素动画的顺序:有三种选项:normal、reverse和random。normal表示顺序显示,reverse表示逆向显示,排在最后面的元素最先开始播放动画,random表示随机播放动画;animation为子元素指定具体的入场动画。
anim/alpha_anim.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fromAlpha="0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toAlpha="0.7" />
为ViewGroup指定android:layoutAnimation属性android:layoutAnimation="@anim/anim_layout"即可。

也可以通过LayoutAnimationController来实现

ListView listView = (ListView)findViewById(R.id.list);
        Animation animation = AnimationUtils.loadAnimation(this,R.anim.alpha_anim);
        LayoutAnimationController controller = new LayoutAnimationController(animation);
        controller.setDelay(0.5f);
        controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
        listView.setLayoutAnimation(controller);
二、activity的切换效果

Activity具有默认的切换效果,我们也可以自定义,主要用到overridePendingTransition(int enterAnim,int exitAnim)这个方法,但是这个方法必须在startActivity()或者finish()之后调用才会起作用。enterAnim表示activity打开时所需的动画资源id,exitAnim表示activity被关闭时所需的动画资源id。

Intent intent = new Intent(this,CommonActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.translate_anim, R.anim.alpha_anim);
退出时也可以指定切换动画:

@Override
    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.translate_anim, R.anim.alpha_anim);
    }
注意: overridePendingTransition这个方法必须在startActivity或者finish方法之后调用才会起作用,否则没有效果。

还可以在style中配置activity进入、退出的动画:

    <style name="SwitchAnim" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/anim1</item>
        <item name="android:activityOpenExitAnimation">@anim/anim2</item>
        <item name="android:activityCloseEnterAnimation">@anim/anim3</item>
        <item name="android:activityCloseExitAnimation">@anim/anim4</item>
    </style>
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowAnimationStyle">@style/SwitchAnim</item>
    </style>
这里一般定义四个属性:
A启动B时,A退出的动画是activityOpenExitAnimation;B进入的动画是activityOpenEnterAnimation。
在B中按Back键,B退出的动画是activityCloseExitAnimation;A进入的动画是activityCloseEnterAnimation。

也可以为Fragment指定切换动画:

getSupportFragmentManager().beginTransaction().setCustomAnimations(R.id.enter,R.id.exit)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值