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