Tôi muốn thiết lập chuyển đổi phần tử được chia sẻ khi chuyển từ một Hoạt động này sang Hoạt động khác.Chuyển đổi hoạt động phần tử được chia sẻ trên android 5
Hoạt động đầu tiên có RecyclerView với các mục. Khi một mục được nhấp vào, mục đó sẽ tạo hiệu ứng cho hoạt động mới.
Vì vậy, tôi đã đặt android: transitionName = "item" trên cả chế độ xem hoạt động cuối cùng, như được xem như chế độ xem mục của trình xem lại.
Tôi cũng đang sử dụng mã này khi đi vào hoạt động tiếp theo:
this.startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, itemView, "boomrang_item").toBundle());
Khi nhấp vào một mục, nó chuyển đúng cách và quan điểm mới được hiển thị. Nó thật sự rất đẹp. Tuy nhiên, khi tôi nhấp vào nút quay lại. Đôi khi nó hoạt động tốt, nhưng hầu hết thời gian hoạt động của tôi gặp sự cố với stacktrace sau:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewGroup.transformMatrixToGlobal(android.graphics.Matrix)' on a null object reference
at android.view.GhostView.calculateMatrix(GhostView.java:95)
at android.app.ActivityTransitionCoordinator$GhostViewListeners.onPreDraw(ActivityTransitionCoordinator.java:845)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:847)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1956)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Tôi đang làm gì sai? Dường như một lỗi trong android 5
bạn có thể thêm tất cả mã có liên quan để dễ dàng tìm ra nơi bạn đang đi sai? – gaara87
Thử đặt 'transitionName' trên _only_ lượt xem phần tử được chia sẻ. –
Tôi gặp vấn đề tương tự khi mở một hoạt động mới, xoay màn hình và nhấn nút quay lại. Bất kỳ giải pháp? – jclova