【发布时间】:2018-06-24 17:03:29
【问题描述】:
我有一个占屏幕一小部分的 mapView,当触摸它时会打开一个全屏视图。
我通过在两个片段之间切换来实现这一点。
我很想使用新的 Lollipop 动画框架将小 mapView 无缝扩展到更大的 mapView(从 Fragment1 到 Fragment2)。
不幸的是,我无法让它工作——我想知道是否有人能够让 mapView 与新的动画框架一起工作。
我的代码:
@SuppressLint("NewApi")
public void launchMapFullscreenFragment(Fragment previousFragment, MapView mapView)
{
// Launch fragment to view Google Maps
FragmentMapFullScreen fragment = new FragmentMapFullScreen();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
previousFragment.setSharedElementReturnTransition(TransitionInflater.from(this).inflateTransition(R.transition.change_image_transform));
previousFragment.setExitTransition(TransitionInflater.from(this).inflateTransition(android.R.transition.explode));
// Create new fragment to add (Fragment B)
fragment.setSharedElementEnterTransition(TransitionInflater.from(this).inflateTransition(R.transition.change_image_transform));
fragment.setEnterTransition(TransitionInflater.from(this).inflateTransition(android.R.transition.explode));
// Add Fragment B
FragmentTransaction ft = getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, fragment)
.addToBackStack("transaction")
.addSharedElement(mapView, "MyTransition");
ft.commit();
}
else
{
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.abc_fade_out);
ft.replace(R.id.content_frame, fragment, FRAGMENT_MAP_FULLSCREEN);
ft.addToBackStack(null);
ft.commit();
}
}
change_image_transform.xml
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<changeTransform />
</transitionSet>
【问题讨论】:
标签: android android-animation android-mapview android-5.0-lollipop