5

Android Lolipop 有一个 api,允许在不同活动中的共享元素之间轻松转换。

活动转换

看起来这个 api 不支持具有多个视图的转换。有没有办法使用相同的api来做到这一点?

编辑

按照@pskink 的建议,我使用了不同的方法

    ActivityOptions options = ActivityOptions
            .makeSceneTransitionAnimation(this, Pair.create((View)view, "viewPager"), Pair.create((View) fab, "fab"));
    startActivity(intent, options.toBundle());

这从 ActivityA 到 ActivityB 工作得很好,但是点击后退按钮会导致这个堆栈跟踪

   A/OpenGLRenderer(17305): requireSurface() called but no surface set!
 A/libc(17305): Fatal signal 6 (SIGABRT), code -6 in tid 17349(RenderThread)
        Build fingerprint: 'google/hammerhead/hammerhead:5.0/LRX21O/1570415:user/release-keys'
        Revision: '11'
        ABI: 'arm'
        pid: 3364, tid: 3414, name: RenderThread  >>> com.example.package <<<
        signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
        Abort message: 'requireSurface() called but no surface set!'
            r0 00000000  r1 00000d56  r2 00000006  r3 00000000
            r4 9e9b5db8  r5 00000006  r6 0000003e  r7 0000010c
            r8 ac39bacc  r9 9e9b5d08  sl 9e9b5d00  fp ac39bb08
            ip 00000d56  sp 9e9b5858  lr b6f1faf9  pc b6f435d4  cpsr 600f0010
        backtrace:
            #00 pc 0003a5d4  /system/lib/libc.so (tgkill+12)
            #01 pc 00016af5  /system/lib/libc.so (pthread_kill+52)
            #02 pc 00017707  /system/lib/libc.so (raise+10)
            #03 pc 00013f75  /system/lib/libc.so (__libc_android_abort+36)
            #04 pc 00012a3c  /system/lib/libc.so (abort+4)
            #05 pc 00007a59  /system/lib/libcutils.so (__android_log_assert+88)
            #06 pc 0003b61f  /system/lib/libhwui.so
            #07 pc 0003b971  /system/lib/libhwui.so
            #08 pc 0003cf8d  /system/lib/libhwui.so
            #09 pc 0003cea5  /system/lib/libhwui.so
            #10 pc 0003d885  /system/lib/libhwui.so
            #11 pc 0003e27b  /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+66)
            #12 pc 000104d5  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+112)
            #13 pc 0005df4d  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+72)
            #14 pc 00010045  /system/lib/libutils.so
            #15 pc 000162e3  /system/lib/libc.so (__pthread_start(void*)+30)
            #16 pc 000142d3  /system/lib/libc.so (__start_thread+6)

编辑2

当我按包名称过滤时收到的唯一日志如下。第一个日志看起来像是来自渲染脚本,我在上面发布了日志,因为我认为它是相关的。

A/OpenGLRenderer(11128): 调用了 requireSurface() 但没有设置表面!

A/libc(11128):致命信号 6 (SIGABRT),tid 11219 (RenderThread) 中的代码 -6

I/ci(11358):动态制作 Creator

W/ResourcesManager(11358):资产路径“/system/framework/com.android.media.remotedisplay.jar”不存在或不包含

W/ResourcesManager(11358):资产路径“/system/framework/com.android.location.provider.jar”不存在或不包含

编辑3

因此,我能够通过禁用 activityA 上的 mapfragment 来使其正常工作。我仍在调查为什么会发生这种情况

4

0 回答 0