android Design : Activity转场动画——ActivityOptions

本文介绍了如何使用Android的ActivityOptionsCompat来创建更符合Material Design风格的Activity转场动画,包括makeCustomAnimation、makeScaleUpAnimation、makeThumbnailScaleUpAnimation以及makeSceneTransitionAnimation的使用方法和示例。通过指定不同的动画效果,可以实现更加流畅的Activity切换体验。同时,文章提到了在Android 5.0以上版本才能使用的共享元素过渡动画(sharedElement Transition)。
摘要由CSDN通过智能技术生成

相信大家对于Activity的过度动画都很熟悉了,一般情况下我们直接使用

overridePendingTransition(enterAnim, exitAnim);
 
 
 
  • 1
  • 1

但是这种老旧、生硬的方式怎么能适合我们的MD风格的App呢!好在google在新的sdk中给我们提供了另外一种Activity的过度动画——ActivityOptions。并且提供了兼容包——ActivityOptionsCompat。这篇博客我们就是来了解下这个新的activity过度机制。

一、 简介

ActivityOptionsCompat是一个静态类,提供了为数不多的几个方法,下面我们来罗列一下:

1. 
ActivityOptionsCompat.makeCustomAnimation(Context context, int enterResId, int exitResId)

2. 
ActivityOptionsCompat.makeScaleUpAnimation(View source,int startX, int startY, int startWidth, int startHeight)

3. 
ActivityOptionsCompat.makeThumbnailScaleUpAnimation(View source,Bitmap thumbnail, int startX, int startY)

4. 
ActivityOptionsCompat.makeSceneTransitionAnimation(Activity activity, View sharedElement, String sharedElementName)

5. 
ActivityOptionsCompat.makeSceneTransitionAnimation(Activity activity,Pair<View, String>… sharedElements)

恩,就这5个方法可以调用,也就是说为我们提供了这么5中过度方式,在使用的时候我们需要在theme指定:

<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowContentTransitions">true</item>
</style>
 
 
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

接下来我们就一一进行了解一下。

二、 makeCustomAnimation

makeCustomAnimation这个很简单,从参数中我们可以发现,这个和overridePendingTransition非常类似,确实,在实现效果上和overridePendingTransition也是相同的。 
下面就一段代码演示一下效果:

public void click(View view) {
      ActivityOptionsCompat compat = ActivityOptionsCompat.makeCustomAnimation(this,
              R.anim.translate_in, R.anim.translate_none);
      ActivityCompat.startActivity(this,
              new Intent(this, Activity2.class), compat.toBundle());
  }
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

三个参数,第一个是指当前activity,第二个和第三个参数分别是进入动画和退出动画,需要注意的是我们启动activity的方式是使用ActivityCompat.startActivity,最后一个参数我们使用compat.toBundle。

来看看目标的activity,

public class Activity2 extends AppCompatActivity {
   

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        ActivityCompat.finishAfterTransition(this);
    }
}

 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值