android 5.0 提供3种过渡动画:
进入
退出
进入退出包括如下效果:
explode 分解:屏幕中间进出
slide 滑动:屏幕边缘进出
fade 淡出:改变透明度来添加或者移除视图
共享
changeBounds :改变目标视图布局边界
changeClipBounds:裁剪目标布局边界
changeTransform:改变视图缩放比例,旋转角度
changeImageTransform:改变视图大小,缩放比例
实际开发中的使用:
1,在要使用过渡动画的多个activity里面添加:
// 允许使用transitions getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
或者在布局样式文件里面添加如下代码:
<item name="android:windowContentTransitions">true</item>
2,不同的动画效果:
进入动画:
getWindow().setEnterTransition(new Explode());
getWindow().setEnterTransition(new Slide());
getWindow().setEnterTransition(new Fade());
退出动画:
getWindow().setExitTransition(new Explode());
getWindow().setExitTransition(new Slide());
getWindow().setExitTransition(new Fade());
2,activity跳转启动动画效果:
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
3,共享元素动画:
public class MainActivity extends Activity { private Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_transition); } // 设置不同动画效果 public void explode(View view) { intent = new Intent(this, Transitions.class); intent.putExtra("flag", 0); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this) .toBundle()); } // 设置不同动画效果 public void slide(View view) { intent = new Intent(this, Transitions.class); intent.putExtra("flag", 1); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this) .toBundle()); } // 设置不同动画效果 public void fade(View view) { intent = new Intent(this, Transitions.class); intent.putExtra("flag", 2); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this) .toBundle()); } // 设置不同动画效果 public void share(View view) { View fab = findViewById(R.id.fab_button); intent = new Intent(this, Transitions.class); intent.putExtra("flag", 3); // 创建单个共享元素 // startActivity(intent, // ActivityOptions.makeSceneTransitionAnimation( // this, view, "share").toBundle()); startActivity(intent, ActivityOptions.makeSceneTransitionAnimation( this, // 创建多个共享元素 Pair.create(view, "share"), Pair.create(fab, "fab")).toBundle()); } }
4,跳转到的activity中的设置:
public class Transitions extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); int flag = getIntent().getExtras().getInt("flag"); // 设置不同的动画效果 switch (flag) { case 0: getWindow().setEnterTransition(new Explode()); break; case 1: getWindow().setEnterTransition(new Slide()); break; case 2: getWindow().setEnterTransition(new Fade()); getWindow().setExitTransition(new Fade()); break; case 3: break; } setContentView(R.layout.activity_transition_to); } }