Ist*_*gar 14 android-fragments shared-element-transition android-recyclerview
我希望你能帮我解决这个问题.我有两个片段,第一个是带有几个图像的recyclerview,第二个片段是这个图像的详细视图.如果用户单击图像,则应用程序执行片段事务并显示详细信息.
我已成功实现片段之间的共享元素转换,如果我单击第一个片段上的小图像,它会变大,并移动到细节视图上的最终位置.
那么,这就是问题,图像的初始位置不是预期的,它开始从原始位置移动几个像素,当我点击图像向右和向下跳跃一点点.
为什么会这样?它很烦人!
转换xml:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeTransform />
<changeBounds />
</transitionSet>
Run Code Online (Sandbox Code Playgroud)
如果我对Recyclerview以外的按钮执行相同操作,则可以完美运行.这是Recyclerview中的某种错误吗?
Seb*_*gel 15
您的RecyclerView项目需要在其共享视图上设置唯一的转换名称.如果您想象RecyclerView的渲染布局层次结构,其中将有许多具有相同转换名称的项目(视图).这种方式不清楚转换,实际的共享元素是什么.例如,您可以将位置附加到视图转换名称,例如transition1,transition2等.现在,当您启动详细信息片段时,必须将转换名称移交给它,并将此名称设置为详细信息中的共享视图片段,例如在onViewCreated()中.
如果未从回收站视图中拾取正确的视图,则可能会发生这种情况.确保使用精确视图(基于位置)而不是根视图.例如,在下面的代码片段中,应使用View v(您在onClick()中收到的):
mAdapter.setOnItemClickListener(
new MyAdapter.OnItemClickListener() {
@Override
public void onClick(View v, int position) {
ImageView heroView;
heroView = (ImageView) v.findViewById(R.id.category_icon);
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
getActivity(), heroView, heroView.getTransitionName());
ActivityCompat.startActivity(getActivity(), intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)
如果您的共享元素是s,那么您还ImageView需要使用转换。ChangeImageTransform尝试添加<changeImageTransform />到您的过渡集。
| 归档时间: |
|
| 查看次数: |
8921 次 |
| 最近记录: |