例如,我要从 MainActivity 中启动 AnimationActivity,只需要在 MainActivity 中 startActivity(); 传入参数即可,代码如下:

startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());

  • 第二步:

在 AnimationActivity 中的 setContentView(); 方法前加入一行代码:

//在需要启动的 activity 中开启动画的特征
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

或者,在 AnimationActivity 中设置如下 style,并引用到 AnimationActivity 即可。

true

  • 第三步:

在 AnimationActivity 中设置要应用的动画效果,如上面介绍的,效果有三种。然后选择任意一种即可,代码如下:

getWindow().setEnterTransition(new Explode());
getWindow().setEnterTransition(new Slide());
getWindow().setEnterTransition(new Fade());

上面设置的是进入 activity 的动画,也可以设置退出 activity 的动画,代码如下:

getWindow().setExitTransition(new Explode());
getWindow().setExitTransition(new Slide());
getWindow().setExitTransition(new Fade());

共享元素动画效果

通过上面这三个步骤,我相信你一定可以实现简单的 activity 过渡动画了,然后接下来介绍的是 activity 共享元素的动画效果,这里会稍微难一点。我就拿我的例子一部分来举例子,这样显得更加容易理解。

例如,我的例子中两个页面都有一个同样内容的 textview ,所以要使其得到共享。

<android.support.v7.widget.AppCompatTextView
android:id="@+id/tv_shared_element"
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_gravity=“bottom”
android:layout_marginTop=“56dp”
android:layout_marginBottom=“72dp”
android:gravity=“center_horizontal”
android:text="@string/app_txt"
android:textColor="#323232"
android:textSize=“18sp”
android:transitionName=“shared element”
tools:ignore=“UnusedAttribute” />

注意:我们必须为两个页面的共同元素(textview)设置一个属性:

android:transitionName=“shared element”

并且必须保证两个 textview 的 transitionName 设置的内容一致,否者将无法达到共享元素的动画效果。

最后的关键一步:更改 startActivity(); 参数内容,因为我们设定了共享元素,所以到进行指定,这样 startActivity 时才能够找到目标,所以启动 activity 的代码因改为这样:

//这里的 sharedElementName 必须与 xml 文件中设置的值一致,否则无法共享
// tvSharedElement 表示要参与共享的 view
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, tvSharedElement,
“shared element”).toBundle());

如果你的两个 activity 中有两个及以上的内容需要共享元素动画时,你只需要修改代码为:

startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,
Pair.create((View) tvSharedElement, “shared element”))
.toBundle());

这里通过 Pair.create(view,“shared name”);来传入需要共享的元素。

好了,本篇关于 android5.x 提供的几种过渡动画效果就展示完了,虽然过渡动画效果很漂亮,但是也要合理的运用,也不能每一个 activity 都设置过渡动画。那么,如上动态图演示的一样,本案例关键代码将在下面贴出:

案例代码

MainActivity 代码如下:

package com.xww.activityanims;

import android.annotation.SuppressLint;
import android.app.ActivityOptions;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatButton;
import android.support.v7.widget.AppCompatTextView;
import android.util.Pair;
import android.view.View;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

@SuppressLint(“NewApi”)
public class MainActivity extends AppCompatActivity {

@BindView(R.id.btn_explode)
AppCompatButton btnExplode;
@BindView(R.id.btn_slide)
AppCompatButton btnSlide;
@BindView(R.id.btn_fade)
AppCompatButton btnFade;
@BindView(R.id.tv_shared_element)
AppCompatTextView tvSharedElement;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}

@OnClick(R.id.btn_explode)
void onExplodeClick() {
Intent intent = new Intent(this, AnimationsActivity.class);
startActivityWithAnimation(intent, “explode”);
}

@OnClick(R.id.btn_slide)
void onSlideClick() {
Intent intent = new Intent(this, AnimationsActivity.class);
startActivityWithAnimation(intent, “slide”);
}

@OnClick(R.id.btn_fade)
void onFadeClick() {
Intent intent = new Intent(this, AnimationsActivity.class);
startActivityWithAnimation(intent, “fade”);
}

private void startActivityWithAnimation(Intent intent, String animType) {
intent.putExtra(“anim”, animType);
//这里的 sharedElementName 必须与 xml 文件中设置的值一致,否则无法共享
// tvSharedElement 表示要参与共享的 view
// startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, tvSharedElement,
// “shared element”).toBundle());
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,
Pair.create((View) tvSharedElement, “shared element”))
.toBundle());
}
}

MainActivity 布局文件我就不贴出来了,就三个 Button 和一个 TextView,最后我会给出本案例完整代码的资源链接,大家若不懂可以去下载来参考。

接着是 AnimationsActivity 的代码,这是一个开启动画的 Activity ,代码如下:

package com.xww.activityanims;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatTextView;
import android.transition.Explode;
import android.transition.Fade;
import android.transition.Slide;
import android.view.Window;

import butterknife.BindView;
import butterknife.ButterKnife;

@SuppressLint(“NewApi”)
public class AnimationsActivity extends AppCompatActivity {

@BindView(R.id.tv_anim_type)
AppCompatTextView tvAnimType;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在需要启动的 activity 中开启动画的特征
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);

setContentView(R.layout.activity_animations);
ButterKnife.bind(this);

setEnterAnim();
}

@SuppressWarnings(“ConstantConditions”)
private void setEnterAnim() {
final String animType = (String) getIntent().getExtras().get(“anim”);
tvAnimType.setText(animType);

switch (animType) {
case “explode”:
getWindow().setEnterTransition(new Explode());
break;
case “slide”:
getWindow().setEnterTransition(new Slide());
break;
case “fade”:
getWindow().setEnterTransition(new Fade());
break;
}
}
}

AnimationsActivity 布局文件如下,我觉得还是有必要贴出来:

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout xmlns:android=“http://schemas.android.com/apk/res/android”
xmlns:app=“http://schemas.android.com/apk/res-auto”
xmlns:tools=“http://schemas.android.com/tools”
android:layout_width=“match_parent”
android:layout_height=“match_parent”>

<android.support.v7.widget.ContentFrameLayout
android:id="@+id/frame"
android:layout_width=“match_parent”
android:layout_height=“280dp”
android:background="#ff3312">

<android.support.v7.widget.AppCompatTextView
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_gravity=“center”
android:text=“https://blog.csdn.net/smile_Running”
android:textColor="#ffffff"
android:textSize=“20sp”
tools:ignore=“HardcodedText” />

</android.support.v7.widget.ContentFrameLayout>

<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_conten

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

t"
android:layout_height=“wrap_content”
android:src="@drawable/ic_person_add_black_24dp"
app:elevation=“8dp”
app:layout_anchor="@id/frame"
app:layout_anchorGravity=“bottom|right” />

<android.support.design.widget.FloatingActionButton
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:src="@drawable/ic_sentiment_satisfied_black_24dp"
app:elevation=“8dp”
app:layout_anchor="@id/frame"
app:layout_anchorGravity=“bottom|left” />

<android.support.v7.widget.CardView
android:layout_width=“220dp”
android:layout_height=“120dp”
app:cardBackgroundColor="#ffdd55"
app:cardCornerRadius=“24dp”

Activity-过渡动画-—-让切换更加炫酷,网易严选Android开发三面面经相关推荐

  1. html css图片展开动画,8个实用炫酷的HTML5图片动画应用

    本文作者html5tricks,转载请注明出处 近期我们发布了不少关于 1.CSS3/jQuery实现移动端滑动图片层叠效果 这是一款基于jQuery和CSS3的图片层叠插件,这和我们之前介绍的CSS ...

  2. Android——浅析Activity过渡动画

    Activity过渡动画 前言 分解动画 效果视频 解析 滑动动画 效果视频 解析 淡出动画 效果视频 解析 共享元素 共享单个元素 效果视频 解析 共享多个元素 效果视频 全部代码 第一个Activ ...

  3. android 应用切换动画,怎么在Android应用中利用Activity对动画进行切换

    怎么在Android应用中利用Activity对动画进行切换 发布时间:2020-11-27 16:19:53 来源:亿速云 阅读:107 作者:Leah 今天就跟大家聊聊有关怎么在Android应用 ...

  4. android 页面过渡动画,Activity过渡动画的实现方法

    1.使用overridePendingTransition方法实现Activity跳转动画 overridePendingTransition方法是Activity中提供的Activity跳转动画方法 ...

  5. 安卓 activity过渡动画

    Activity过渡的五中实现 1.使用overridePendingTransition方法实现Activity跳转动画  overridePendingTransition方法是Activity中 ...

  6. Activity过渡动画

    Android5.0之前我们一般会使用overridePendingtransition(int inId, int outId)来给Activity增加一些切换动画,但效果差强人意.Android5 ...

  7. android 天气动画,为app制作炫酷天气动画 – WeatherView

    WeatherView 从1.1.0版本开始这个库使用了一个不同的setter结构. WeatherView是一个为app制作一个炫酷天气动画的Android库. Setup Android Stud ...

  8. Android 炫酷动画APP,21 款炫酷动画开源框架,照亮你的APP

    原标题:21 款炫酷动画开源框架,照亮你的APP 2017年安卓巴士全球开发者论坛-上海站 前言 最近对应用的UI视觉效果突然来了兴致,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对 ...

  9. html动画图片重叠,CSS3炫酷堆叠图片展示动画特效

    这是一款效果的CSS3炫酷堆叠图片展示动画特效.该堆叠图片展示效果是将一组图片堆叠在一起,然后以各种CSS动画效果来切换最上面的一张图片.该特效将使用纯CSS3制作,它可以在所有现代浏览器和移动设备上 ...

最新文章

  1. Swift----函数 、 闭包 、 枚举 、 类和结构体 、 属性
  2. 实践--课程表(仿超级课程表展示课表)
  3. C# - Get HttpWebResponse Text
  4. [转]bootstrap table 动态列数
  5. 信息系统项目管理师学习方法
  6. 三相逆变器双pi控制器参数如何调节_Boost 变换器 PI参数设计举例
  7. PS 色调——老照片效果
  8. php ci框架 模板引擎,详解CodeIgniter框架实现的整合Smarty引擎DEMO
  9. MySQL(23)--- 正则表达式
  10. 程序员大厂面试被怼:干这么多年只会增删改查!谁会要!
  11. [paper reading] CornerNet
  12. win10 mysql zip 安装教程_windows10+mysql8.0.11zip安装教程详解
  13. 三维重建笔记_SLAM简介
  14. java filter 注解_注解方式的过滤器(Filter)不能过滤Servlet(注解方式)的问题...
  15. 单片机---HLK-W801图形框架LVGL下开发(四)
  16. bitvise terminal 中文乱码
  17. 初三英语关于计算机的作文,初三英语作文
  18. CAN唤醒硬件方案和软件分析
  19. 微信公众号二维码不同环境差异化处理
  20. 今天考了关于java认证的OCJP,特此谈谈个人java学习过程及心得

热门文章

  1. 以数据驱动管理转型,元年科技正当时
  2. 惊世奇闻,原来曹操 周瑜 诸葛亮 是一家人?
  3. baidupcsgo安卓_BaiduPCS GO插件下载-BaiduPCS-GO下载最新版-西西软件下载
  4. PHP数据类型有几种?
  5. 宝鲲财经:炒汇高手补仓技巧
  6. 工业便携式嵌入式迷你工控主机
  7. [零刻]EQ12迷你主机设置来电开机自启教程
  8. 关于Android10 暗黑模式的简述
  9. 浅谈公司网络的外网IP和内网IP
  10. 培训机构专用刷题小程序