MD中的动画

来源:互联网 发布:淘宝的阿玛尼这么便宜 编辑:程序博客网 时间:2024/05/14 02:22

参考

        官网

共享元素转场动画

        使用前,开启硬件加速,否则无效果(对一部分手机即使关闭硬件加速,可能还会有效果,但有一部分手机是没有效果的)。示例如下:

Pair<View, String> pair2 = Pair.create(image, "image");                ActivityOptionsCompat compat = ActivityOptionsCompat.makeSceneTransitionAnimation(                        FirstActivity.this,  pair2);                Intent toDetail = new Intent(FirstActivity.this, SecondActivity.class);                toDetail.putExtra("content", "xxxx");                ActivityCompat.startActivity(FirstActivity.this,toDetail, compat.toBundle());

第二个activity的布局为:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:layout_weight="1"        android:text="占位"        android:layout_width="match_parent"        android:layout_height="0dp" />    <ImageView        android:transitionName="image" <!--此处的值一定要与创建pair时,共享的view对应的transitionName一致-->        android:id="@+id/id_image111"        android:layout_width="match_parent"        android:layout_height="100dp"        android:scaleType="fitXY"        android:layout_alignParentBottom="true"        android:src="@drawable/background" /></LinearLayout>

需要注意:

        1,通过Pair(support v4中)创建Pair对象进,第一个为两个activity之间共享的组件,第二个为组件的transitionName。

        2,如果有多个组件共享,则需要创建多个Pair对象,并且将这些对象传入到ActivityOptionsCompat.makeSceneTransitionAnimation()中。

        3,第二个activity中共享的元素必须设置transitionName属性,且其值必须是1中的对应的组件对应的transitionName。

        4,Pair支持泛型,但同一次共享时,所有的Pair对象的泛型应该完全一样。

        5,共享的组件,不需要具有相同的id;而且第一个activity中的组件也不需要配置transitionName属性。




















0 0
原创粉丝点击