共享元素的实现

本文详细介绍如何在Android应用中实现共享元素动画,通过设置View的transitionName属性并使用makeSceneTransitionAnimation方法实现页面间的平滑过渡。

共享元素:是A页面向B页面跳转的时候的一种炫酷动画效果,可以实现一个或多个元素进行共享,是可变参数  。

                 (只有 Android5.0以上的版本才能展现出效果来,共享的元素也就是View


一、首先,在A activity 和 B activity里面的要共享的View指定属性 android:transitionName="xxx";

     这是A activity的xml:

<ImageView
        android:id="@+id/image"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:transitionName="name"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:src="@mipmap/ic_launcher"/>

    <ImageView
        android:id="@+id/image_left"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:transitionName="name_one"
        android:layout_alignParentBottom="true"
        android:src="@mipmap/ic_launcher"/>

    以下是B activity 的xml:

      

 <ImageView
        android:id="@+id/second_image"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@mipmap/ic_launcher"
        android:transitionName="name"
        android:layout_centerHorizontal="true"/>

    <ImageView
        android:id="@+id/second_right"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@mipmap/ic_launcher"
        android:transitionName="name_one"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"/>

二、在java代码中,跳转页面的时候

          

Intent intent = new Intent(this, SecondActivity.class);

                /**
                 *  共享一个元素的时候
                 *
                 * 第一个参数  activity
                 * 第二个参数  View sharedElement 共享的元素
                 * 第三个参数  sharedElementName  在xml中指定的共享元素的名字
                 */
                ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this, v, "name");

                // 如果版本高于16 进行页面跳转 添加场景转换动画
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    startActivity(intent,optionsCompat.toBundle());
                }else{
                    // 低于16 正常启动页面
                    startActivity(intent);
                }

 /**
                 * 共享多个元素的时候
                 * 
                 * 
                 */
                Pair pair = new Pair(mImage,"name");
                Pair pairOne = new Pair(mLeftImage, "name_one");
                ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(this,pair,pairOne);

 





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值