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键,鼠标点击选择想要增加切换动画的页面,然后点击菜单栏的“切换” 第二步,在切换菜单下面选择具体的切换效果 ...
随机推荐
- 归并排序(Python)
一.采用分治策略:将原问题划分成n个规模较小的但结构和原问题相同的子问题,递归解决这些子问题后合并各个结果从而得到原问题的解. 二.分治策略的步骤: 分解:将原问题分解成一系列子问题 解决:子问题粒度 ...
- bzoj4547: Hdu5171 小奇的集合(矩阵乘法)
4547: Hdu5171 小奇的集合 题目:传送门 题解: 做一波大佬们的坑...ORZ 不得不说,我觉得矩阵很简单啊,就一个3*3的(直接看代码吧) 给个递推柿纸:f[i]=f[i-1]+max1 ...
- 记录一下c++的一点指针所得
c++有两种传值可以改变外部参数,一种是传递指针,另一种是传递引用,对于前者,可以用Ugly(but explicitly),对于后者,Clean(but hidden),在传递的时候有一种值得注意的 ...
- express+模板引擎构建项目时遇到的几个小问题
1.启动项目/调试项目 项目启动用:npm start 由于每次更改路由代码后必须重启服务才可以看效果,所以为了达到热加载的效果我们安装 supervisor:全局安装也可以: npm install ...
- 访问Storm ui界面,出现org.apache.storm.utils.NimbusLeaderNotFoundException: Could not find leader nimbus from seed hosts ["master"]. Did you specify a valid list of nimbus hosts for confi的问题解决(图文详解)
不多说,直接上干货! 前期博客 apache-storm-0.9.6.tar.gz的集群搭建(3节点)(图文详解) apache-storm-1.0.2.tar.gz的集群搭建(3节点)(图文详解)( ...
- 访问Storm ui界面,出现org.apache.storm.utils.NimbusLeaderNotFoundException: Could not find leader nimbus from seed hosts ["master" "slave1"]. Did you specify a valid list of nimbus hosts for confi的问题解决(图文详解)
不多说,直接上干货! 前期博客 apache-storm-1.0.2.tar.gz的集群搭建(3节点)(图文详解)(非HA和HA) 问题详情 org.apache.storm.utils.Nimbu ...
- JavaScript学习——使用JS实现首页轮播图效果
1.相关技术 获取元素 document.getElementById(“id 名称”) 事件(onload) 只能写一次并且放到body标签中 定时操作:setInterval(“changeImg ...
- 原生的ajax请求----(播放托管到爱奇艺上的视频)
播放视频 $(function(){ //视频播放 $('.play-icon').click(function () { $.ajax({ type:"get", url: &q ...
- 织梦dedecms支持flash的flv文件播放功能代码
1.打开/include/FCKeditor/editor/dialog/dede_media.htm if(playtype=="rm"|| (playtype=="- ...
- omi-mp-create源码加注
omi-mp-create是dntzhang写的小程序框架,主要功能是实现全局状态自动更新和页面间通信,传送门. 代码虽然简单但是注释不多读起来还是需要一点时间理解,因此在上面加入了个人理解的注释方便 ...