admin管理员组文章数量:1573690
Activity transition(Activity转场动画效果)
概念:两个Activity进行跳转的时候,转场动画。
ActivityOptions类。只支持API21以上的版本。
版本判断会比较麻烦,谷歌很贴心 设计了一个兼容类:ActivityOptionsCompat(v4包中)
但是此类在低版本上面并没有转场动画效果,只是解决了我们手动去判断版本的问题而已。
转场动画可以分为两大类:共享元素转换和普通的转换
使用转换动画前提:需要给两个Activity都设置如下,让其允许使用转场动画。
//方法一:
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
//方法二:
修改主题:<item name="android:windowContentTransitions">true</item>
1.共享元素转换
概念:可以把两个Activity当中的相同的元素关联起来做连贯的变换动画。
前提:(1)给两个Activity当中的共享元素view都设置同一个名字 android:transitionName
<ImageView
android:id="@+id/iv1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:transitionName="iv1"
android:src="@drawable/image" />
按返回键的时候自动实现了返回的共享元素转场动画,源码如下:
public void onBackPressed() {
finishAfterTransition();
}
public void finishAfterTransition() {
if (!mActivityTransitionState.startExitBackTransition(this)) {
finish();
}
}
//单个元素共享
ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, iv1, "iv1");
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(1000);
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);//进来的动画
版权声明:本文标题:Activity转场动画效果 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727747461a1127975.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论