android – Ripple效果无法使用共享元素转换和RecyclerView
作者:互联网
当`RecyclerView项单击启动详细活动时,我有一个共享元素转换,但项目点击的涟漪效果永远不可见
使用共享元素转换启动活动
Intent intent = IntentUtils.createDetailsIntent(InspectionListFragment.this.getContext(), record);
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(),
view, getString(R.string.transition_element)).toBundle();
getActivity().startActivity(intent, options);
我注意到了这条日志消息
D/OpenGLRenderer: endAllStagingAnimators on 0x95e86600 (RippleDrawable) with handle 0xaa6c2760
如果我删除了转换,则纹波有效(我没有看到此消息).
延迟活动开始使用Handler
如果我使用带有postDelayed的Handler来启动Activity,则结果是混合的.我看到了波纹,但过渡并不顺利:
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = IntentUtils.createDetailsIntent(InspectionListFragment.this.getContext(), record);
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(),
view, getString(R.string.transition_element)).toBundle();
getActivity().startActivity(intent, options);
}
}, 200);
使用ListView
请注意,使用具有相同项目布局和makeSceneTransitionAnimation的ListView可以正常工作.不幸的是,这不合适.
项目布局
<LinearLayout
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
解决方法:
当我在卡片中使用ImageView作为共享元素时,我遇到了同样的问题.我能够通过使用CardView作为共享元素转换(和涟漪效应)的源视图来解决它.
<android.support.v7.widget.CardView
android:id="@+id/itemCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:cardCornerRadius="@dimen/card_corner_radius"
app:cardElevation="@dimen/card_elevation"
android:layout_gravity="center"
android:clickable="true"
android:onClick="@{onItemClick}"
android:foreground="?android:attr/selectableItemBackground"
>
我正在使用数据绑定,但共享元素更改实际上只是选择不同的源视图:
// before:
//onItemClickListener.onItemClick(view, getAdapterPosition(), getItemId(), Pair.create((View)b.itemImage, "activity_image"));
// after:
onItemClickListener.onItemClick(view, getAdapterPosition(), getItemId(), Pair.create((View)b.itemCard, "activity_image"));
在此之前,我也尝试使用短延迟的postDelayed,但我发现这种方法为我喜欢的导航添加了太多的延迟.
标签:android,android-recyclerview,android-transitions 来源: https://codeday.me/bug/20190711/1431515.html