安卓Activity转场动画

安卓Activity转场动画:两个Activity进行跳转的时候,转场动画
1,ActivityOptions 适合API21及安卓5.0以上版本
2,兼容类:ActivityOptionsCompat(v4包中),只是做了版本判断,在API21以下没有动画效果
3,转场动画可以分为两大类:共享元素转换和普通的转换

使用转换动画前提:需要给两个Activity都设置如下,让其允许使用转场动画。
//方法一:
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
在setContentView(R.layout.activity_main);之前
//方法二:
修改主题:<item name="android:windowContentTransitions">true</item>


1)共享元素转换
概念:可以把两个Activity当中的相同的元素关联起来做连贯的变换动画。
前提:(1)给两个Activity当中的共享元素view都设置同一个名字---android:transitionName
Activity_1     <ImageView
android:id="@+id/iv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:transitionName="transition_name"
android:src="@drawable/aa" />


Activity_2     <ImageView
android:id="@+id/iv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:transitionName="transition_name"
android:src="@drawable/aa" />


//单个元素共享
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, iv1, "transition_name");
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent, optionsCompat.toBundle());
//多个共享元素
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat
.makeSceneTransitionAnimation(this, Pair.create((View)iv1, "iv1"),Pair.create((View)bt, "bt"));
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent, optionsCompat.toBundle());


2)普通的转换动画
(只有API 21才有下面自带效果)
三种系统带的:滑动效果(Slide)、展开效果Explode、渐变显示隐藏效果Fade


Slide slide = new Slide();
slide.setDuration(300);
getWindow().setExitTransition(slide);//出去的动画
getWindow().setEnterTransition(slide);//进来的动画


Explode explode = new Explode();
explode.setDuration(1000);
getWindow().setExitTransition(explode);//出去的动画
getWindow().setEnterTransition(explode);//进来的动画


Fade fade = new Fade();
fade.setDuration(1000);
getWindow().setExitTransition(fade);//出去的动画
getWindow().setEnterTransition(fade);//进来的动画


//如果有共享元素,可以设置共享元素,那么它就会按照共享元素动画执行,其他的子view就会按照Fade动画执行。
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(MainActivity.this);
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent, optionsCompat.toBundle());
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值