100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 安卓Activity转场动画

安卓Activity转场动画

时间:2021-09-30 01:29:32

相关推荐

安卓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());

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。