对于共享元素转换,我遵循这个 github项目.它有2个屏幕 - 一个带有recyclerview,有多个卡片,第二个是细节屏幕.正如预期的那样,它展示了imageview&textview从recyclerview项目到详细屏幕和背面反向过渡的共享元素转换.
但是,如果用户在详细信息屏幕上更改方向,然后按下后退按钮,则反向过渡动画不起作用.看着这个 2:49之间的视频的帧2:57,似乎连方向更改后成为可能.有什么想法吗?
编辑:
请查看此视频以便更好地理解.
android material-design onbackpressed shared-element-transition android-recyclerview
我有2个片段:片段1包含recyclerview和片段2,其中包含所选项目的详细视图.这两个片段之间存在共享元素图像视图.在从片段1转换到2时,我希望看到标准的共享元素转换效果,但它似乎不适用于recyclerview.因为如果我在第一个片段中使用另一个单独的视图而不是recyclerview,它会表现出适当的过渡.请注意,我已将基于位置的唯一转换名称分配给recyclerview项目图像.
代码如下:MyActivity.java
public class MyActivity extends Activity {
private static final String TAG = MyActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.main_container, new PlaceholderFragment())
.commit();
}
}
public static class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ViewHolder> {
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
private OnItemClickListener mItemClickListener;
List<Integer> items = new ArrayList<Integer>();
public void setOnItemClickListener(OnItemClickListener listener) {
this.mItemClickListener = listener;
}
public ImageAdapter() {
items.add(1);
items.add(1);
items.add(1);
items.add(1);
items.add(1);
items.add(1);
items.add(1);
items.add(1); …Run Code Online (Sandbox Code Playgroud) android transition shared android-fragments android-recyclerview
在替换片段时,我正在使用适用于Android棒棒糖版本的幻灯片动画.它按预期的方式工作,但是在按下后退按钮时,它首先弹回当前片段,然后执行反向输入动画(滑出).
private void replaceContentFrameByFragment(Fragment replaceBy, String replaceByFragmentTag) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Slide slide = new Slide(Gravity.BOTTOM);
slide.setDuration(1000);
replaceBy.setEnterTransition(slide);
}
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_frame, replaceBy, replaceByFragmentTag);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commitAllowingStateLoss();
}
Run Code Online (Sandbox Code Playgroud)
那么,如何在幻灯片的反向动画完成后强制片段弹回?我注意到该活动提供了方法finishAfterTransition().frgament有类似的东西吗?
android android-animation android-fragments android-transitions android-5.0-lollipop