当RecyclerView的一项被点击后启动详细Activity时,我有一个共享元素过渡,但是单击项目的波纹效果从未可见
使用共享元素过渡启动Activity
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
来启动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"
ListView
和RecyclerView
之间会有这样的差异。 - sidecarcat