Android5.0之后的页面切换动画
Android5.0之后给我们开发者剩了好多的事情,为什么这么说呢?还记得刚开始的时候,Android里面的所有的动画都要我们开发者自己来写,现在不需要了,因为5.0之后自带了好多的动画,比如:按钮点击的动画、页面切换的动画(在android5.0之前想都不敢想的)。
今天我着重讲一下页面之间的切换,目前5.0系统自带了三种动画方式:Explode(缩放)、Fade(淡入淡出)、Slide(滑动进入)。下面就这三中方式进行介绍一下。
在讲解之前,现对于动画的方式进行介绍一下。通常,我们进行页面跳转到时候,进本都是A到B,然后再从B返回到A。
这个过程应该是调用页面A中的 getWindow().setExitTransition(transition);和页面B的getWindow().getEnterTransition(transition);
含义就是:从页面A到页面B首先要先退出页面A,然后在进入页面B,所以要先调用页面A的退出动画,然后再去调用页面B点进入动画。
和前面一个的意思相反,从界面B退回到界面A,首页要调用页面B的getWindow().setReturnTransition(transition);然后在调用页面A的getWindow().setReenterTransition(transition);
含义就是:从页面B到页面A是一个返回的过程,所以要先调用页面B点返回方法,然后在调用重新进入页面A的方法。
接着看一下代码:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn1).setOnClickListener(this);
findViewById(R.id.btn2).setOnClickListener(this);
findViewById(R.id.btn3).setOnClickListener(this);
}
@Override
public void onClick(View view) {
Transition transition = null;
Intent intent = null;
switch (view.getId()) {
case R.id.btn1:
//缩放
intent = new Intent(MainActivity.this,Main2Activity.class);
transition = new Explode();
break;
case R.id.btn2:
//淡入淡出
intent = new Intent(MainActivity.this,Main3Activity.class);
transition = new Fade();
break;
case R.id.btn3:
//滑动
intent = new Intent(MainActivity.this,Main4Activity.class);
transition = new Slide();
break;
}
transition.setDuration();
getWindow().setEnterTransition(transition);
getWindow().setExitTransition(transition);
getWindow().setReenterTransition(transition);
getWindow().setReturnTransition(transition);
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());
}
}
缩放界面:
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setAllowEnterTransitionOverlap(true);
getWindow().setAllowReturnTransitionOverlap(true);
Explode explode = new Explode();
explode.setDuration();
getWindow().setEnterTransition(explode);
getWindow().setExitTransition(explode);
setContentView(R.layout.activity_main2);
}
@Override
public void onBackPressed() {
super.onBackPressed();
finishAfterTransition();
}
}
淡入淡出:
public class Main3Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setAllowEnterTransitionOverlap(true);
getWindow().setAllowReturnTransitionOverlap(true);
Fade fade = new Fade();
fade.setDuration();
getWindow().setEnterTransition(fade);
getWindow().setReturnTransition(fade);
setContentView(R.layout.activity_main3);
}
@Override
public void onBackPressed() {
super.onBackPressed();
finishAfterTransition();
}
}
滑动:
public class Main4Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setAllowEnterTransitionOverlap(true);
getWindow().setAllowReturnTransitionOverlap(true);
Slide slide = new Slide();
slide.setDuration();
getWindow().setReturnTransition(slide);
getWindow().setEnterTransition(slide);
setContentView(R.layout.activity_main4);
}
@Override
public void onBackPressed() {
super.onBackPressed();
finishAfterTransition();
}
}
效果:
Android5.0之后的页面切换动画的更多相关文章
- (原)android中的动画(三)之动画监听&页面切换动画
1.动画也可以设置监听事件,例如在动画结束时需要执行某操作 把要执行的代码写在onAnimationEnd()回调方法中即可: anim.setAnimationListener(new Animat ...
- iOS页面切换动画实现方式。
iOS页面切换动画实现方式. 1.使用UIView animateWithDuration:animations:completion方法 Java代码 [UIView animateWithDura ...
- QtQuick多页面切换、多页面切换动画、多个qml文件数据交互
一.QtQuick多页面切换方法 (1)“隐藏法” 前一个视图visible设为false或者透明度opacity设为0,相当于“隐藏”了,实际还存在: 要显示的视图visible设为true或者透明 ...
- react实现页面切换动画效果
一.前情概要 注:(我使用的路由是react-router4) 如下图所示,我们需要在页面切换时有一个过渡效果,这样就不会使页面切换显得生硬,用户体验大大提升: but the 问题是 ...
- Activity 切换动画和页面切换动画
public class MainActivity extends Activity { private ViewFlipper viewFlipper; private float startX; ...
- PresentViewController切换界面(一些系统自带的页面切换动画)
视图切换,没有NavigationController的情况下,一般会使用presentViewController来切换视图并携带切换时的动画, 其中切换方法如下: – presentViewCon ...
- Windows Phone使用sliverlight toolkit实现页面切换动画效果
使用应用时,好多app在页面切换的时候都有一个动画效果,感觉很炫,也大大增加了用户体验,怎么实现呢? 界面的切换,可以用Windows Phone Toolkit中的TransitionService ...
- (转)Android中的页面切换动画
这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下 ...
- PPT页面切换动画
想要自己的PPT更加炫酷一些的话,可以再给每个页面的切换,加上动画效果. 第一步,按住ctrl键,鼠标点击选择想要增加切换动画的页面,然后点击菜单栏的“切换” 第二步,在切换菜单下面选择具体的切换效果 ...
随机推荐
- Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI
准备工作:Eclipse ADT IDE 开发工具,NDK .Java 环境,博主的配置是:Windows x86 , ADT Build: v22.3.0-887826 , JAVA 1.7, ND ...
- USACO runaround
/* ID:kevin_s1 PROG:runround LANG:C++ */ #include <iostream> #include <cstdio> #include ...
- pandaboard安装ubuntu
参照:https://wiki.ubuntu.com/ARM/OmapDesktopInstall 主要是在linux下安装,主要命令为: zcat ./ubuntu-12.04-preinstall ...
- java web项目中资源国际化
有一些网站会有语言栏选项: 选择英文,内容就显示为英文: 选择中文,内容就显示文中文. 这里就用到了国际化资源. 先看效果图: 步骤: 1.建立资源包: mess_en_US.properties ( ...
- IOS设备获取崩溃日志的办法
除了用xcode 的devices功能获取之外,在windows下面也是可以获取的.首先安装itools.下载地址: http://www.itools.cn/ 安装好后将设备(iphone或ipad ...
- *hiho 1475 - 数组拆分,dp,由N^2降到NlogN
题目链接 描述 小Ho得到了一个数组作为他的新年礼物,他非常喜欢这个数组! 在仔细研究了几天之后,小Ho成功的将这个数组拆成了若干段,并且每段的和都不为0! 现在小Ho希望知道,这样的拆分方法一共有多 ...
- php 基础------数组过滤
array_filter();过滤数组 语法: array_filter(array,callbackfunction); array 必写,规定要过滤的数组 callbackfunction 必写, ...
- oc消息转发机制本质
第一级转发:主体不变,动态添加对应函数: 第二级转发:函数不变,切换接收主体: 第三极转发:函数签名不变,主体和函数都有可能变化: 1.使用函数的动态添加技术: 2.使用的类似is-a swzzing ...
- 并发设计模式之Guarded Suspension模式
- 原文链接: http://www.joyhwong.com/2016/11/19/并发设计模式之guarded-suspension模式/ Guarded Suspension意为保护暂停,其核心 ...
- CDR X6设计师的福利,3折特惠!
最新消息称,即日起CorelDRAW官方为回馈新老用户长期以来的支持,特别推出CorelDRAW X6降价活动.目前CorelDRAW X6售价仅为2399元,照这个价格,CDR 2017 会 ...