我一直在关注这些指南[1,2],以便更多地了解Android中的活动和片段转换和动画。
我的方案似乎与给出的所有三个示例都不同,因为我在<ImageView>
的片段中有HomePageActivity
,而HomePageFragment
中的ImageView的OnClick加载了DetailActivity
和DetailFragment
在顶部加载<ImageView>
。
如何将第一个<ImageView>
的平滑过渡动画提供给第二个?
我正在使用Xamarin for .NET,但如果提供的话,我可以遵循Java逻辑。
HomePageFragment.cs (我尝试了几件不同的事情)
var intent = new Intent(this.Activity, typeof(DetailActivity));
intent.PutExtra("page", JsonConvert.SerializeObject(page));
// .. test
SharedElementReturnTransition = TransitionInflater.From(this.Activity).InflateTransition(Resource.Transition.change_image_trans);
ExitTransition = TransitionInflater.From(this.Activity).InflateTransition(Resource.Transition.fade_trans);
// .. end test
//var options = ActivityOptionsCompat.MakeSceneTransitionAnimation(this.Activity, p1);
this.Activity.StartActivity(intent/*, options.ToBundle()*/);
DetailActivity.cs
var frag = new PageDetailFragment();
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
frag.SharedElementEnterTransition = TransitionInflater.From(this).InflateTransition(Resource.Transition.change_image_trans);
frag.EnterTransition = TransitionInflater.From(this).InflateTransition(Resource.Transition.fade_trans);
}
frag.Arguments = Intent.Extras; // pass arguments across
SupportFragmentManager.BeginTransaction()
.Replace(Resource.Id.content_frame, frag)
.Commit();
摘录 home_tile_item.axml (通过RecyclerView重复)
<ImageView
android:id="@+id/imageTile"
android:transitionName="topImageTransition"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter" />
摘录 page_detail_fragment.axml
<ImageView
android:id="@+id/top_image"
android:transitionName="topImageTransition"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxHeight="400dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter" />
此外,top_image的背景由Universal Image Loader提供,在某些情况下可能不会加载发送到imageTile的相同URL。另外,这样可以吗?