实现activity跳转动画的若干种方式

第一种: (使用overridePendingTransition方法实现Activity跳转动画)

在Activity中代码如下

/**
 * 点击按钮实现跳转逻辑
 */
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
 * 在调用了startActivity方法之后立即调用overridePendingTransition方法
 */
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_in_left);
}
});

在anim文件下代码如下







第二种: (使用style的方式定义Activity的切换动画)

从清单文件入手




进入AppTheme





在windowAnimationStyle中存在四种动画

activityOpenEnterAnimation // 用于设置打开新的Activity并进入新的Activity展示的动画
activityOpenExitAnimation  // 用于设置打开新的Activity并销毁之前的Activity展示的动画
activityCloseEnterAnimation  // 用于设置关闭当前Activity进入上一个Activity展示的动画
activityCloseExitAnimation  // 用于设置关闭当前Activity时展示的动画

Activity中的测试代码如下

/**
 * 点击按钮,实现Activity的跳转操作
 * 通过定义style的方式实现activity的跳转动画
 */
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
 * 普通的Intent跳转Activity实现
 */
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});

第三种: (使用ActivityOptions切换动画实现Activity跳转动画)

第一步

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 设置contentFeature,可使用切换动画
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Transition explode = TransitionInflater.from(this).inflateTransition(Android.R.transition.explode);
getWindow().setEnterTransition(explode);

setContentView(R.layout.activity_main);
}

第二步

/**
 * 点击按钮,实现Activity的跳转操作
 * 通过Android5.0及以上代码的方式实现activity的跳转动画
 */
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ThreeActivity.class);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());
}
});

第四种: (使用ActivityOptions之后内置的动画效果通过style的方式)

先在Application项目res目录下新建一个transition目录,然后创建资源文件activity_explode,编写如下代码



定义style文件



执行跳转逻辑

/**
 * 点击按钮,实现Activity的跳转操作
 * 通过Android5.0及以上style的方式实现activity的跳转动画
 */
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
 * 调用ActivityOptions.makeSceneTransitionAnimation实现过度动画
 */
Intent intent = new Intent(MainActivity.this, FourActivity.class);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());
}
});

第五种: (使用ActivityOptions动画共享组件的方式实现跳转Activity动画)

在Acitivity_A中布局文件中定义共享组件

在Acitivity_B中布局文件中关联共享组件






执行跳转逻辑

/**
 * 点击按钮,实现Activity的跳转操作
 * 通过Android5.0及以上共享组件的方式实现activity的跳转动画
 */
button5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, FiveActivity.class);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this, button5, "shareNames").toBundle());
}
});

总结:

  • overridePendingTransition方法从Android2.0开始,基本上能够覆盖我们activity跳转动画的需求;

  • ActivityOptions API是在Android5.0开始的,可以实现一些炫酷的动画效果,更加符合MD风格;

  • ActivityOptions还可以实现两个Activity组件之间的过度动画; *

关于我

微信公众号:infree6 或者直接扫码

实现activity跳转动画的若干种方式_第1张图片
image

你可能感兴趣的:(实现activity跳转动画的若干种方式)