欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

跳转activity的动画实现

程序员文章站 2022-05-03 08:24:17
...

前言

我看到博客上有很多关于跳转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属性也可自定义

相关标签: 跳转activity动画