Tôi có một bố trí như một trong hình dưới đâyAndroid chuyển yếu tố chia sẻ, sai vị trí bắt đầu
nơi một khung màu cam là một HostFragment
được xây dựng như thế này:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.design.widget.AppBarLayout
android:id="@id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:titleMarginStart="68dp"
/>
<de.halfbit.audiopie.ui.common.views.SlidingTabs
android:id="@id/tabs"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:slidingTabsIndicatorColor="@color/accent"
/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
và một khung màu xanh là một đứa trẻ ItemsFragment
với một số RecyclerView
trong đó.
Khi tôi nhấp vào một ô trong RecyclerView
Tôi thay thế HostFragment
bằng một đoạn ContentFragment
khác, giả sử chia sẻ hình ảnh được nhấp. Tôi làm điều đó bằng cách áp dụng một sự chuyển đổi yếu tố chia sẻ như sau:
FragmentManager fm = getChildFragmentManager();
Fragment fragment = ContentFragment.newInstance();
AutoTransition autoTransition = new AutoTransition();
autoTransition.setDuration(3000);
fragment.setSharedElementEnterTransition(autoTransition);
fm.beginTransaction()
.replace(R.id.library, fragment)
.addSharedElement(view, "cover")
.commit();
Nó hoạt động tốt bên cạnh một điều: vị trí ban đầu của gạch bìa khi hình ảnh động bắt đầu trong ContentFragment là sai (see this screen cast video) - nó đã không mong muốn dưới bù đắp.
Hình ảnh bù đắp này trông bằng với chiều cao của thanh tab của HostFragment
. Các bạn có ý tưởng nào về cách tránh sự bù đắp này không?
Điều cũng đáng nói đến, rằng tất cả RecyclerView's
trẻ em đều có duy nhất transitionNames
.
Bạn đã thử cách ly vấn đề, để xem liệu nó có phải do 'CoordinatorLayout' gây ra không? Đó là một lớp lỗi, vì vậy tôi sẽ thử chạy hình ảnh động trong một phụ huynh 'FrameLayout' đơn giản, và nhìn thấy nếu vấn đề vẫn còn hiện diện. –
@PaulBurke Cảm ơn bạn đã xem xét nó. Tôi cảm thấy buồn bã bởi số lượng các vấn đề trong thư viện thiết kế và hỗ trợ mới nhất. Vì vậy, tôi quyết định sử dụng một loại hoạt hình khác ngay bây giờ. Tôi cần một chút thời gian để bình tĩnh và sau đó tôi sẽ cố gắng cô lập vấn đề. –