Activity场景切换效果的实现以及Scene切换和共享元素的实现

界面Activity切换滑动的效果实现:

1. styles.xml文件中添加下面一行代码,表示激活Activity中元素的过渡效果:

<item name="android:windowContentTransitions">true</item> 

2.启动Aty2代码:

startActivity(new Intent(this, Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this).toBundle()); 

 

2. aty2中加入入场动画(滑动效果以及时间)

getWindow().setEnterTransition(new Slide().setDuration(2000));  

getWindow().setExitTransition(new Slide().setDuration(2000)); 

淡入淡出效果

getWindow().setEnterTransition(new Fade().setDuration(2000));  

getWindow().setExitTransition(new Fade().setDuration(2000));  

 

 

共享元素效果:

1. 相同控件类型添加android:transitionName="share"属性字符串要一致

2. 启动aty代码startActivity(new Intent(this,Main2Activity.class), ActivityOptions.makeSceneTransitionAnimation(this,view,"share").toBundle());

需要将控件转化为View作为参数view

 

多个共享元素启动代码

startActivity(new Intent(MainActivity.this, thirdAty.class),
        ActivityOptions.makeSceneTransitionAnimation(MainActivity.this, Pair.create(view1,"v1").create(view2 ,"v2")).toBundle());

 

 

 

 

场景切换(scene可以从xml文件中加载)

scene1=Scene.getSceneForLayout(fl,R.layout.scene1,this);
scene2=Scene.getSceneForLayout(fl,R.layout.scene2,this);

Transition transition=new ChangeBounds();
transition.setDuration(DateUtils.SECOND_IN_MILLIS);
transition.setInterpolator(new AccelerateDecelerateInterpolator());
TransitionManager.go(scene1);

//切换

TransitionManager.go(scene2,transition);

 

 

 

场景切换动画(创建一个View圆形出现的动画)

//动画
final Animator animator= ViewAnimationUtils.createCircularReveal(fl,x,y,startRadius,endRadius);

 

猜你喜欢

转载自blog.csdn.net/qq_39650441/article/details/80682738