跳转activity的动画实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/firesmog/article/details/81608440

前言

我看到博客上有很多关于跳转activity动画的实现,也是借鉴博客上的方法实现的,这里我只记录一点关于跳转加速器的设置。为后续自己使用能快速找到,大家一起学习。

实现步骤:

一:先在res文件下创建anim文件来放置xml动画文件,一般动画会有两个,activity A跳转到其他activity B的动画和activity A本身退出时的动画。这里我们新建zoomin.xml表示跳转动画。zoomout表示本activity退出去时候的动画。

zoomin代码如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
//加速器在这,可根据需求替换
    android:interpolator="@android:anim/decelerate_interpolator">
    <scale android:fromXScale="0.1" android:toXScale="1.0"
        android:fromYScale="0.1" android:toYScale="1.0"
        android:pivotX="50%p" android:pivotY="50%p"
        android:duration="2000" />
    <!-- 这里为了看到动画演示效果,把动画持续时间设为3秒 -->
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:duration="2000" />
</set>

zoomout代码如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
//加速器在这,可以根据需求替换
    android:interpolator="@android:anim/overshoot_interpolator"
    android:zAdjustment="top">
    <scale android:fromXScale="1.0" android:toXScale="0.5"
        android:fromYScale="1.0" android:toYScale="0.5"
        android:pivotX="50%p" android:pivotY="50%p"
        android:duration="1000" />
    <!-- 系统内置的动画持续时间
    android:duration="@android:integer/config_mediumAnimTime"
    -->
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
        android:duration="1000"/>

</set>

二、使用这两个动画。

我们可以在activity跳转时和activity finish的调用。具体如下

Intent intent = new Intent(AppDetailActivity.this,LookPictureActivity.class);
        intent.putExtra("pageTotalSize",list.size());
        intent.putExtra("curPage",position);
        intent.putExtra("curIcon",list.get(position));
        intent.putExtra("appImagList",(Serializable)list);
        startActivity(intent);
       //这里就是调用动画的地方
        overridePendingTransition(R.anim.zoomin, R.anim.zoomout);
        LogUtil.d(WatchAppStoreConstant.TAG,"position = " + position);

总结:

这里我主要记录下加速器,这是从其他博客转的,感谢猴子

android:interpolator="@android:anim/accelerate_interpolator" 设置动画为加速动画(动画播放中越来越快)  
  
android:interpolator="@android:anim/decelerate_interpolator" 设置动画为减速动画(动画播放中越来越慢)  
  
android:interpolator="@android:anim/accelerate_decelerate_interpolator" 设置动画为先加速在减速(开始速度最快 逐渐减慢)  
  
android:interpolator="@android:anim/anticipate_interpolator" 先反向执行一段,然后再加速反向回来(相当于我们弹簧,先反向压缩一小段,然后在加速弹出)  
  
android:interpolator="@android:anim/anticipate_overshoot_interpolator" 同上先反向一段,然后加速反向回来,执行完毕自带回弹效果(更形象的弹簧效果)  
  
android:interpolator="@android:anim/bounce_interpolator" 执行完毕之后会回弹跳跃几段(相当于我们高空掉下一颗皮球,到地面是会跳动几下)  
  
android:interpolator="@android:anim/cycle_interpolator" 循环,动画循环一定次数,值的改变为一正弦函数:Math.sin(2* mCycles* Math.PI* input)  
  
android:interpolator="@android:anim/linear_interpolator" 线性均匀改变  
  
android:interpolator="@android:anim/overshoot_interpolator" 加速执行,结束之后回弹
animation.setInterpolator(new AccelerateInterpolator());  
  
animation.setInterpolator(new DecelerateInterpolator());  
  
animation.setInterpolator(new AccelerateDecelerateInterpolator());  
  
animation.setInterpolator(new AnticipateInterpolator());  
  
animation.setInterpolator(new AnticipateOvershootInterpolator());  
  
animation.setInterpolator(new BounceInterpolator());  
  
animation.setInterpolator(new CycleInterpolator(2));  
  
animation.setInterpolator(new LinearInterpolator());  
  
animation.setInterpolator(new OvershootInterpolator());

上面的加速器顺序是一一对应的。动画不设置Interpolator属性即为默认值,匀速

Interpolator属性也可自定义

猜你喜欢

转载自blog.csdn.net/firesmog/article/details/81608440
今日推荐