android5.0后只需要简单几句代码就能实现这种前一个activity里的view过渡到第二个activity中,但是不能向前兼容,想在5.0之前的系统中实现还是得老老实实去用属性动画搞,废话不多说,直接上代码
一,第一个activity点击跳转的代码这样写:
@Override public void onClick(View v) { Pair<View, String> p = new Pair<View, String>(headerIv, "head");//haderIv是头像控件 Pair<View, String> p1 = new Pair<View, String>(nameTv, "name");//nameTv是名字控件 Intent intent = new Intent(MainActivity.this, MyInfoActivity.class); MainActivity.this.startActivity(intent, ActivityOptions .makeSceneTransitionAnimation(MainActivity.this, p, p1).toBundle()); }
其中可以用同样的方法设置多个view过渡
二,第二个activity里onCreate里调用这几句
headerIv.setTransitionName("head");//第二个Activity里的头像控件 nameTv.setTransitionName("name");//第二个Activity里的名字控件 postponeEnterTransition();
startPostponedEnterTransition();
当然头像如果是图片如果是加载网络的最好在加载完毕的监听里才调用
tartPostponedEnterTransition();
三,退出第二个Activity用这句
this.finishAfterTransition();//不然返回时没有过度动画
OK,一个最简单的又高大上的过渡动画就完成了,是不是很简单,当然其中还有值得深挖的地方大家自己去挖,百度transition动画等等
提示只能在5.0以上的系统中编译运行否则崩溃,低版本需要做版本判断
原创作品,欢迎转载