Android5.0之Activity的转场动画的示例

Activity的转场动画很早就有,但是太过于单调,样式也不好看,于是Google在Android5.0之后,又推出的新的转场动画,效果还是非常炫的,今天我们一起来看一下。

1.旧转场动画回顾

首先我们还是先来看看在5.0之前如果我们想要在启动Activity时使用动画该怎么做呢?

startActivity(new Intent(this, Main3Activity.class));
    overridePendingTransition(R.anim.in,R.anim.out); 

对应的入场和出场动画就是两个补间动画,如下:

入场动画:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
  <translate
    android:toYDelta="0"
    android:fromYDelta="100%"
    android:duration="1500"/>
</set> 

出场动画:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
  <translate
    android:duration="1500"
    android:fromYDelta="0"
    android:toYDelta="-100%"/>
</set> 

这种动画是针对整个Activity而言的,无法设置Activity中元素的入场/出场动画。如果想要设置Activity中元素的出场/入场动画可以通过设置布局上元素的元素的出/入场动画来实现。但这无疑增加了工作量。

2 5.0之后的转场动画

Android5.0之后Activity的出入场动画总体上来说可以分为两种,一种就是分解、滑动进入、淡入淡出,另外一种就是共享元素动画,下面我们分别就这两种动画进行说明。

2.1 分解、滑动进入、淡入淡出

1.分解

先来看一张效果图:

就是这样一种效果,那我们接下来看看这种效果要怎么实现。

首先,把之前启动Activity的代码改成下面的写法:

代码如下:

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

添加完成之后,在Main2Activity中设置该Activity的进出场动画即可:

getWindow().setEnterTransition(new Explode().setDuration(2000));
getWindow().setExitTransition(new Explode().setDuration(2000)); 

OK,就是这么简单,哦,对了,大家一定要记得在styles.xml文件中添加下面一行代码,表示激活Activity中元素的过渡效果:

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

2.滑动进入

有了上面的步骤,再设置滑动进入就很简单了,只需要修改Main2Activity中的两行代码即可:

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

显示效果如下:

3.淡入淡出

Main2Activity修改代码如下:

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

显示效果如下:

2.2 共享元素动画

共享元素动画是一个非常神奇的东东,我们先来看看效果:

可能这个Gif动画还不太清晰,我再来解释一下,在MainActivity和Main2Activity里边都有一个Button,只不过一个大一个小,从MainActivity跳转到Main2Activity时,我并没有感觉到Activity的跳转,只是觉得好像第一个页面的Button放大了,同理,当我从第二个页面回到第一个页面时,也好像Button变小了。OK,这就是我们的Activity共享元素。

当两个Activity中有同一个控件的时候,我们便可以采用共享元素动画。

使用共享元素动画的时候,我们需要首先给MainActivity和Main2Activity中的两个button分别添加android:transitionName="mybtn"属性,并且该属性的值要相同,这样系统才知道这两个控件是共享元素。设置完成之后,接下来就是启动Activity的代码了,如下:

代码如下:

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

还是上面那种启动方式的重载方法,只不过这里多了两个参数,view表示MainActivity中的共享元素(就是那个Button),第二个参数表示布局文件中transitionAnimation属性的值。OK,就这么简单。

这时有的筒子可能有疑问了,那我如果两个页面中有多个共享元素该怎么办呢?简单,android:transitionName属性还像上面一样设置,然后在启动Activity时我们可以通过Pair.create方法来设置多个共享元素,如下:

startActivity(new Intent(this, Main2Activity.class),
        ActivityOptions.makeSceneTransitionAnimation(this, Pair.create(((View) iv1),"myiv"), create(((View) textView),"mytv")).toBundle()); 

Pair.create方法中有两个参数,第一个是共享元素的实例(注意要是View类型),第二个参数是该View的transitionAnimation属性的值。

就这么简单,筒子们快速尝试一下吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android中Activity和Fragment传递数据的两种方式

    1.第一种方式,也是最常用的方式,就是使用Bundle来传递参数 MyFragment myFragment = new MyFragment(); Bundle bundle = new Bundle(); bundle.putString("DATA",values);//这里的values就是我们要传的值 myFragment.setArguments(bundle); 然后在Fragment中的onCreatView方法中,通过getArgments()方法,获取到bundle

  • Android 滑动返回Activity的实现代码

    Android 滑动返回Activity的实现代码 近来玩微信的时候偶然发现,向左滑动朋友圈竟然可以返回主页,故引起兴趣特研究 代码很简洁 package com.example.wyj.cainiaoshopping.activity; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import com.

  • android如何设置Activity背景色为透明色

    一直听说透明效果的activity,到底长啥样呢?来张图看看,上面这个白色背景的就是 方法一 在res/values/styles.xml,设置Activity的样式 <!--透明activity的style--> <style name="transparent_activity"> <item name="android:windowBackground">@color/transparent_background</i

  • Android使用Activity实现简单的可输入对话框

    1.需求分析 众所周知,在应用中这样那样的评论总是少不了的,有的应用是在底部直接加一个EditText和一个Button,让用户输入文字或者表情之后点击按钮提交:而有的虽然也放置了EditText,但仅仅是一个"摆设",并不具备输入功能,用户点击它后会弹出一个跳转到一个可以真正编辑的页面或者弹出一个可以输入内容的对话框. 比如下面这种效果: 这里的效果可以细分为四点: 点击底部的按钮之后会弹出对话框,对话框在布局的底部: 对话框中有输入框EditText,可以输入内容: 对话框弹出后E

  • Android 中Activity 之间传递参数

    Android 中Activity 之间传递参数 1.传递简单数据 在A Activity中 findViewById(R.id.startBActicityBtn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(MainActivity.this,TheActivity.class); // 对基础的数据类型进行传递 i.

  • Android 关闭多个Activity的实现方法

    Android 关闭多个Activity的实现方法 总的来说有四种方法: 1.使用Application来进行关闭 public class App extends Application { private static List<Activity> lists = new ArrayList<>(); public static void addActivity(Activity activity) { lists.add(activity); } public static

  • Android单元测试之对Activity的测试示例

    上一篇文章已经介绍了单元测试的作用和简单示例,如果不了解的读者可以先阅读上一篇Android单元测试-作用以及简单示例. 这篇文章主要介绍常见的Activity中的测试. 对Acitivity的测试 对于Activity,我们大致有两种测试需求: 1.在Activity正常启动后,查看界面布局是否正确,包括View的点击事件等是否正确. 2.需要在Activity启动前完成各种数据的部署,然后查看Activity的效果. 对于这两种需求,笔者分别做了两个示例解说: 1.检测一个布局中的butto

  • Android5.0之Activity的转场动画的示例

    Activity的转场动画很早就有,但是太过于单调,样式也不好看,于是Google在Android5.0之后,又推出的新的转场动画,效果还是非常炫的,今天我们一起来看一下. 1.旧转场动画回顾 首先我们还是先来看看在5.0之前如果我们想要在启动Activity时使用动画该怎么做呢? startActivity(new Intent(this, Main3Activity.class)); overridePendingTransition(R.anim.in,R.anim.out); 对应的入场

  • angular2系列之路由转场动画的示例代码

    Angular2的动画系统赋予了制作各种动画效果的能力,致力于构建出与原生CSS动画性能相同的动画. Angular2的动画主要是和@Component结合在了一起. animations元数据属性在定义@Component装饰.就像template元数据属性!这样就可以让动画逻辑与其应用代码紧紧集成在一起,这让动画可以更容易的出发与控制. 一.在app.mudule.ts中引入: import { BrowserAnimationsModule } from '@angular/platfor

  • Android5.0新特性详解之全新的动画

    在Material Design设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性.Material主题为控件和Activity的过渡提供了一些默认的动画,在android L上,允许自定义这些动画: Touch feedback 触摸反馈 Circular Reveal 圆形展示 Curved motion 曲线运动 View state changes 视图状态变化 Vector Drawables 矢量图动画 Activity transitions 活动转场 触摸反馈 触

  • Android实现Reveal圆形Activity转场动画的完整步骤

    前言 Activity的转场动画很早就有,但是太过于单调,样式也不好看,本文将给大家介绍了关于Android实现Reveal圆形Activity转场动画的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 一.效果 二.知识点 CircularReveal动画.透明主题.转场动画(非必须) 三.方案 假设有两个Activity A和B.Reveal圆形Activity转场动画效果先从A到B,那么基本方案如下: 确定要显示的圆形动画中心起点位置 通过Intent将起点位置从A

  • Android中转场动画的实现与兼容性处理

    前言 在 Android 5.0 之前,我们已经有了 overridePendingTransition() 方法来实现一些转场效果.然而,在 Android 5.0 以后,转场效果更加炫酷. 比如下面的动画: 一.Android L 中的转场动画 实现转场动画只需三步: 在 res/ 目录下创建 transition 文件夹,在该文件夹下定义界面转场动画和共享元素的动画. 在 res/value/style 文件中为每个 Activity 指定转场动画的 style ,并在 AndroidMa

  • 详解iOS开发中的转场动画和组动画以及UIView封装动画

    一.转场动画 CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 属性解析: type:动画过渡类型 subtype:动画过渡方向 startProgress:动画起点(在整体动画的百分比) endProgress:动画终点(在整体动画的百分比) 转场动画代码示例 1.界面搭建 2.实现代码 复制代码

  • vue实现跳转接口push 转场动画示例

    1.index.js 配置子路由children. import Vue from 'vue' import Router from 'vue-router' import SingerDetail from 'components/singer-detail/singer-detail' Vue.use(Router) export default new Router({ routes: [ { path: '/', redirect: '/recommend' }, { path: '/s

  • Android5.0中Material Design的新特性

     Material Design简介 Material Design是谷歌新的设计语言,谷歌希望寄由此来统一各种平台上的用户体验,Material Design的特点是干净的排版和简单的布局,以此来突出内容. Material Design对排版.材质.配色.光效.间距.文字大小.交互方式.动画轨迹都做出了建议,以帮助设计者设计出符合Material Design风格的应用. Material Design设计语言鼓励大家使用充满活力的鲜艳色彩,并在同一界面建议使用三种色调,并保障有一个强色调,

  • 详解Android(共享元素)转场动画开发实践

    最近零碎时间一直在研究OpenGL,所以没怎么进行分享,以后可能大部分时间会学习系统底层\NDK\VR\AR等领域,话不多少,今天来分享个小的动画效果. 效果如下 基本知识 其实Android的转场动画由来已久,比如平常开发安卓的时候界面切换 都是右进右出,这样的效果,就是早期的转场动画,在5.0之后安卓官方支持了共享元素的效果,那么问题来了,5.0以后该怎么适配? 准备步骤 定义两个activity,界面跳转是从A到B. ActivityA定义一个控件View,在跳转时传入到Pair里面,详细

  • Android工具栏顶出转场动画的实现方法实例

    前言 ndroid5.0之后新增了很多好看的转场动画,相比于以前的overridePendingTransition()丰富了很多,特别新增了共享元素跳转的方式.本文将给大家详细介绍关于Android工具栏顶出转场动画实现的相关资料,下面话不多说了,来一起看看详细的介绍吧 实现效果 为何做这个动画 起初对于这两个界面的转场动画打算简单使用android原生的共享元素动画,可是实现后发现效果并不是很好,在很多手机上流畅度太差. 以下在叙述时把转场前的页面称为A页面, 转场的目前页面称为B页面 实现

随机推荐