Android共享元素动画效果显示问题解决

目录
  • bug描述
  • 官方文档
  • 解决流程
  • 总结

bug描述

设计同学想搞一个点击图片item,item内的图片移动到新页面的图片位置的效果,一想就是共享元素就能搞定啊。

companion object {
        fun gotoDetail(
            context: Activity,
            dynamicId: String?,
            jumpComment: Boolean = false,
            shareElement: Boolean = false,
            imageView: ImageView? = null,
            nameView: TextView? = null,
            avatarView: ImageView? = null,
        ) {
            LogUtils.w(shareElement)
            if (shareElement) {
                val intent = Intent(context, HomeDynamicDetailAcitvity::class.java)
                intent.putExtra("dynamicId", dynamicId ?: "")
                intent.putExtra("jumpComment", jumpComment)
                intent.putExtra("shareElement", shareElement)
                val options = ActivityOptions
                    .makeSceneTransitionAnimation(
                        context,
                        UtilPair.create(imageView, context.getString(R.string.dynamic_start_top_image)),
                        UtilPair.create(avatarView, context.getString(R.string.dynamic_start_avatar)),
                        UtilPair.create(nameView, context.getString(R.string.dynamic_start_name))
                    )
//                val options = ActivityOptions.makeSceneTransitionAnimation(context, imageView, context.getString(R.string.dynamic_start_top_image))

                // start the new activity
                ActivityCompat.startActivity(context, intent, options.toBundle())
            } else {
                val params = HashMap<String, Any>()
                params["dynamicId"] = dynamicId ?: ""
                params["jumpComment"] = jumpComment
                context.toActivity(RoutePath.HOME_DYNAMIC_DETAIL, params)

            }
        }
    }

结果按照文档写了一下,但是效果却有问题。通过把动画时长放到5x的情况下,发现不是正常的平移动画,而是先显示一个小的图片然后再渐渐隐藏,然后新界面的大图片再渐渐显示,动画效果明显不对啊。

官方文档

要在具有一个共享元素的两个 Activity 之间添加屏幕过渡动画,请执行以下操作:

\

  • 在主题背景中启用窗口内容过渡。
  • 在样式中指定共享元素过渡。
  • 将过渡定义为 XML 资源。
  • 使用 android:transitionName 属性为两个布局中的共享元素指定一个通用名称。
  • 使用 ActivityOptions.makeSceneTransitionAnimation() 函数。

解决流程

百度了一下看看有没有人遇到类似的问题,但是并没有。也对应修改了一下style主题什么的,也没有什么作用。最后想了想,又新建了一个项目,写个demo测试了一下,上面的自己写的代码并没有上面问题,既然没有问题,那就是项目代码里面有问题了,和demo最大的区别就是项目里有网络请求,以及图片加载的操作。确定了不确定的地方那就试试看。

supportPostponeEnterTransition()

supportStartPostponedEnterTransition()

一个暂停的方法,一个开始动画的方法,一进入就暂停动画,网络请求或者图片加载结束后开始动画,搞定问题。最后看效果。

ok解决收工

总结

到此这篇关于Android共享元素动画效果显示问题解决的文章就介绍到这了,更多相关Android共享元素动画显示内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Android(共享元素)转场动画开发实践

    最近零碎时间一直在研究OpenGL,所以没怎么进行分享,以后可能大部分时间会学习系统底层\NDK\VR\AR等领域,话不多少,今天来分享个小的动画效果. 效果如下 基本知识 其实Android的转场动画由来已久,比如平常开发安卓的时候界面切换 都是右进右出,这样的效果,就是早期的转场动画,在5.0之后安卓官方支持了共享元素的效果,那么问题来了,5.0以后该怎么适配? 准备步骤 定义两个activity,界面跳转是从A到B. ActivityA定义一个控件View,在跳转时传入到Pair里面,详细

  • Android共享元素动画效果显示问题解决

    目录 bug描述 官方文档 解决流程 总结 bug描述 设计同学想搞一个点击图片item,item内的图片移动到新页面的图片位置的效果,一想就是共享元素就能搞定啊. companion object { fun gotoDetail( context: Activity, dynamicId: String?, jumpComment: Boolean = false, shareElement: Boolean = false, imageView: ImageView? = null, na

  • Android Activity共享元素动画示例解析

    目录 正文 TransitionManager介绍 Scene(场景) 生成场景 Transition(过渡) OverlayView和ViewGroupOverlay GhostView Activity的共享元素源码分析 我们先以ActivityA打开ActivityB为例 ActivityB返回ActivityA SharedElementCallback回调总结 正文 所谓Activity共享元素动画,就是从ActivityA跳转到ActivityB 通过控制某些元素(View)从Act

  • Android实现带动画效果的可点击展开TextView

    本文为大家分享了Android实现带动画效果的可点击展开TextView 制作代码,效果图: 收起(默认)效果: 点击展开后的效果: 源码: 布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/activity_main" xmlns:android="http://schemas.android.com/apk/res/a

  • Android自定义带动画效果的圆形ProgressBar

    本文实例为大家分享了Android自定义带动画效果的圆形ProgressBar,供大家参考,具体内容如下 最近有个需求显示进度,尾部还要有一标示,像下边这样 使用自定义View的方式实现,代码如下,很简单注释的很清楚 文章最后我们拓展一下功能,实现一个带动画效果的进度条 package com.example.fwc.allexample.progressbar; import android.animation.ValueAnimator; import android.annotation.

  • Android GridView实现动画效果实现代码

     Android GridView实现动画效果 项目中用到的一些动画,GridView的Item依次从屏幕外飞入到相应位置,附上相关代码: MainActivity.Java package com.mundane.gridanimationdemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.an

  • Android仿Flipboard动画效果的实现代码

    1.上原图 前几天在 Hencoder 征稿看到的Filpboard 里的的动画效果: Filipboard.gif 先bb一句:在看本文的同时,如果觉得我写的模糊看不太懂的可以直接拉到文末,配合完整代码再一步一步看. 2.实现 整体思路: 用手机拍下来,逐帧观看了许久,恍然大悟,就是一张纸,折起一边之后,让其对折线绕中心点旋转. 关联自定义 View : Camera 来控制对折幅度, canves 控制旋转. 具体: 每当对折线旋转的时候,图标总是一边是折起来的,一边是平铺的,且中心对称,所

  • Android酷炫动画效果之3D星体旋转效果

    在Android中,如果想要实现3D动画效果一般有两种选择:一是使用Open GL ES,二是使用Camera.Open GL ES使用起来太过复杂,一般是用于比较高级的3D特效或游戏,并且这个也不是开源的,像比较简单的一些3D效果,使用Camera就足够了. 一些熟知的Android 3D动画如对某个View进行旋转或翻转的 Rotate3dAnimation类,还有使用Gallery( Gallery目前已过时,现在都推荐使用 HorizontalScrollView或 RecyclerVi

  • Android 四种动画效果的调用实现代码

    (1) main.xml 代码如下:(声明四个按钮控件) XML代码: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget32" android:layout_width="fill_parent" android:layout_height="fill_parent&qu

  • Android 3D旋转动画效果实现分解

    这篇文章主要介绍一下如何实现View的3D旋转效果,实现的主要原理就是围绕Y轴旋转,同时在Z轴方面上有一个深入的缩放. 演示的demo主要有以下几个重点: 1,自定义旋转动画 2,动画做完后,重置ImageView 先看一下程序的运行效果:  1,自定义动画类 这里实现了一个Rotate3dAnimation的类,它扩展了Animation类,重写applyTransformation()方法,提供指定时间的矩阵变换,我们在这个方法里,就可以利用Camera类得得到一个围绕Y轴旋转的matrix

随机推荐