freco无法使用共享元素效果的解决方法

今天使用SimpleImageView的时候发现没法使用共享元素效果,看到github上的issue:
Shared element transition · Issue #22 · facebook/fresco
https://github.com/facebook/fresco/issues/22

然后我在新的activity里加上这两行解决了(kotlin代码):

        window.sharedElementEnterTransition = DraweeTransition.createTransitionSet(ScalingUtils.ScaleType.CENTER_CROP, ScalingUtils.ScaleType.FIT_CENTER) // 进入
        window.sharedElementReturnTransition = DraweeTransition.createTransitionSet(ScalingUtils.ScaleType.FIT_CENTER, ScalingUtils.ScaleType.CENTER_CROP) // 返回

附上实现过程:

第一个activity的图片:

<com.longzhu.livearch.router.imageload.SimpleImageView
    android:id="@+id/ivRealCenter"
    android:layout_width="45dp"
    android:layout_height="45dp"
    android:transitionName="share"//注意这里,共享元素的字符串要一致
    android:layout_centerHorizontal="true"
    app:roundAsCircle="true" />

第二个activity的图片:

<com.longzhu.livearch.router.imageload.SimpleImageView
   android:id="@+id/simg_head"
   android:layout_width="72dp"
   android:layout_height="72dp"
   android:layout_gravity="center_horizontal"
   android:layout_marginRight="24dp"
   android:src="@mipmap/ic_launcher_round"
   android:transitionName="share"//注意这里,共享元素的字符串要一致
   app:actualImageScaleType="fitCenter"
   app:roundAsCircle="true"
   app:roundingBorderColor="@color/white"
   app:roundingBorderWidth="1dp" />

第一个activity启动第二个activity:

        ivRealCenter?.setOnClickListener {
            //            ToastUtil.showToast(context, "跳转个人中心")
            var intent = Intent(context, PersonalCenterActivity::class.java)
            intent.putExtra("head", mCurAvatarUrl)//传递图片的路径给下一个activity
            context.startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(context as Activity?, Pair(ivRealCenter, "share")).toBundle())
        }

第二个activity加载图片:

        var avatar = intent.getStringExtra("head")
        if (!TextUtils.isEmpty(avatar)) {
            ImageLoadUtils.showImage(avatar, simgHead)
        }

第二个activity的oncreate方法里要加上这两行:

        window.sharedElementEnterTransition = DraweeTransition.createTransitionSet(ScalingUtils.ScaleType.CENTER_CROP, ScalingUtils.ScaleType.FIT_CENTER) // 进入
        window.sharedElementReturnTransition = DraweeTransition.createTransitionSet(ScalingUtils.ScaleType.FIT_CENTER, ScalingUtils.ScaleType.CENTER_CROP) // 返回

效果图:
fresco 共享元素

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值