Android 多视图活动转换

Android 多视图活动转换,android,shared-element-transition,activity-transition,Android,Shared Element Transition,Activity Transition,Android Lolipop有一个api,允许在不同活动中的共享元素之间轻松转换 此api似乎不支持具有多个视图的转换。有没有办法使用相同的api实现这一点 编辑 按照@pskink的建议,我使用了不同的方法 ActivityOptions options = ActivityOptions .makeSceneTransitionAnimation(this, Pair.create((View)view, "viewPager"), Pair.create

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)
A/OpenGLRenderer(17305):调用了requireSurface(),但没有曲面集!
A/libc(17305):致命信号6(SIGABRT),tid 17349中的代码-6(RenderThread)
构建指纹:“google/hammerhead/hammerhead:5.0/LRX21O/1570415:用户/释放密钥”
修订:‘11’
阿比:“手臂”

pid:3364,tid:3414,name:RenderThread>>>com.example.package您查看过支持库吗?我还没有深入研究转换,但我认为支持库中已经为此内置了一些内容。启动新活动时,必须创建
ActivityOptions op=ActivityOptions.makeSceneTransitionAnimation(…)
,然后调用toBundle()方法,以便将其传递给
startActivity()
method@pskink是的,这就是我目前正在做的事情。它工作得很好,但我有两个视图,我想使用带有参数(活动,对…)的版本。您可以传递任意多个对,例如:ActivityOptions op=ActivityOptions.makeSceneTransitionAnimation(this,Pair.create((视图)icon,“icon”),Pair.create((视图)name,“name”),Pair.create((视图)pkg,“pkg”)我也有这个问题,禁用MapFragment解决了这个问题,创建了这个问题的bug报告