Android 共享元素在未设置动画的片段之间转换

Android 共享元素在未设置动画的片段之间转换,android,android-fragments,element,transition,shared,Android,Android Fragments,Element,Transition,Shared,所需的共享元素不会设置动画,它们只是显示/淡入,而不是从一个视图移动到另一个视图。可能有什么问题?我读过多篇教程,但都没有成功。这当然是一件小事。。。 我正在AVD6.0上测试 谢谢你的帮助 应用程序通过MainActivity加载起始片段启动 public void openFindDancerFragment() { FindDancerFragment findDancerFragment = new FindDancerFragment(); getSupportFrag

所需的共享元素不会设置动画,它们只是显示/淡入,而不是从一个视图移动到另一个视图。可能有什么问题?我读过多篇教程,但都没有成功。这当然是一件小事。。。 我正在AVD6.0上测试

谢谢你的帮助

应用程序通过MainActivity加载起始片段启动

public void openFindDancerFragment() {
    FindDancerFragment findDancerFragment = new FindDancerFragment();
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.main_fragment_container, findDancerFragment)
            .addToBackStack(null)
            .commit();
}
这将带您进入开始片段

Start fragment.java 结束片段XML

舞者项目转换XML
您已经将transitionName添加到结束片段xml中,因此无需再次设置,删除代码即可。应该是这样的:

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, 
 Bundle savedInstanceState) {
          Bundle bundle = getArguments();
          Bitmap imageBitmap = null;
          String dancerName = "";
          View view = inflater.inflate(R.layout.fragment_dancer_details, container, false);

          if (bundle != null) {
              imageBitmap = bundle.getParcelable("IMAGE");
              dancerName = bundle.getString("NAME_TEXT");
          }

          ((ImageView) view.findViewById(R.id.dancerImageDetails)).setImageBitmap(imageBitmap);
          ((TextView) view.findViewById(R.id.dancerNameDetails)).setText(dancerName);

          return view;
      }
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/find_dancer_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#eee"
tools:context="com.example.ginold.dance.Fragments.FindDancerFragment">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:orientation="horizontal">
    <ListView
        android:id="@+id/dancersListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        setSharedElementEnterTransition(TransitionInflater.from(getContext()).inflateTransition(R.transition.dancer_item_transition));
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    Bundle bundle = getArguments();
    Bitmap imageBitmap = null;
    String dancerName = "";
    View view = inflater.inflate(R.layout.fragment_dancer_details, container, false);

    if (bundle != null) {
        imageBitmap = bundle.getParcelable("IMAGE");
        dancerName = bundle.getString("NAME_TEXT");
    }

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        view.findViewById(R.id.dancerImageDetails).setTransitionName(getString(R.string.dancer_icon_transition));
        view.findViewById(R.id.dancerNameDetails).setTransitionName(getString(R.string.dancer_name_transition));
    }

    ((ImageView) view.findViewById(R.id.dancerImageDetails)).setImageBitmap(imageBitmap);
    ((TextView) view.findViewById(R.id.dancerNameDetails)).setText(dancerName);

    return view;
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimaryDark"
    tools:context="com.example.ginold.dance.Fragments.DancerDetailsFragment">

<TextView
    android:id="@+id/dancerNameDetails"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentStart="true"
    android:layout_centerVertical="true"
    android:layout_marginStart="113dp"
    android:text="chuhj"
    android:textColor="@color/colorAccent"
    android:textSize="50dp"
    android:transitionName="@string/dancer_name_transition" />

<ImageView
    android:id="@+id/dancerImageDetails"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentTop="true"
    android:layout_marginStart="12dp"
    android:layout_marginTop="103dp"
    android:transitionName="@string/dancer_icon_transition" />
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
    <changeTransform/>
    <changeBounds/>
</transitionSet>
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, 
 Bundle savedInstanceState) {
          Bundle bundle = getArguments();
          Bitmap imageBitmap = null;
          String dancerName = "";
          View view = inflater.inflate(R.layout.fragment_dancer_details, container, false);

          if (bundle != null) {
              imageBitmap = bundle.getParcelable("IMAGE");
              dancerName = bundle.getString("NAME_TEXT");
          }

          ((ImageView) view.findViewById(R.id.dancerImageDetails)).setImageBitmap(imageBitmap);
          ((TextView) view.findViewById(R.id.dancerNameDetails)).setText(dancerName);

          return view;
      }