1.首先我们先讲下两个activity之间的共享元素平滑过渡动画:
直接上代码:
在A(activity)中:
id_iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DetailActivity.startAction(MainActivity.this,v,imgurl);
}
});
在B(activity)中
public static void startAction(Context mContext, View view,String imgurl) {
Intent intent = new Intent(mContext, DetailActivity.class);
intent.putExtra("img",imgurl);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ActivityOptionsCompat activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(
(Activity) mContext, new Pair<View, String>(view, IMAGE));
mContext.startActivity(intent, activityOptions.toBundle());
} else {
//让新的Activity从一个小的范围扩大到全屏
ActivityOptionsCompat options = ActivityOptionsCompat
.makeScaleUpAnimation(view, view.getWidth() / 2, view.getHeight() / 2, 0, 0);
ActivityCompat.startActivity((Activity) mContext, intent, options.toBundle());
}
}
在 ActivityOptionsCompat.makeSceneTransitionAnimation方法里 我们可以并列写多个 new Pair
ImagerFragment2 imagerFragment2 = ImagerFragment2.newInstance(kittenNumber);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
imagerFragment2.setSharedElementEnterTransition(new DetailsTransition());
imagerFragment2.setEnterTransition(new Fade());
setExitTransition(new Fade());
imagerFragment2.setSharedElementReturnTransition(new DetailsTransition());
}
getActivity().getSupportFragmentManager()
.beginTransaction()
.addSharedElement(holder.image, "Image_fragment")
.replace(R.id.container_fragment, imagerFragment2)
.addToBackStack(null)
.commit();
调用 setSharedElementEnterTransition() 指定 View 如何从第一个 Fragment 转换为跳转 Fragment 中的 View。
调用 addSharedElement() 来关联要与 Fragment 共享的 View。(第一个参数: 共享的 View,第二个参数:跳转的Fragment 中的共享 View 的 Transition Name)
PS:
最后付下整体代码下载地址:
http://download.csdn.net/download/shanshan_1117/9957658