Android 多视图活动转换
Android Lolipop有一个api,允许在不同活动中的共享元素之间轻松转换 此api似乎不支持具有多个视图的转换。有没有办法使用相同的api实现这一点 编辑 按照@pskink的建议,我使用了不同的方法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
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报告