返回顶部
首页 > 资讯 > 移动开发 >Android动画了解—一些项目案例分析
  • 688
分享到

Android动画了解—一些项目案例分析

案例分析Android 2022-06-06 14:06:44 688人浏览 薄情痞子
摘要

文章目录写在前面带路径运动的过渡动画整体缩放的效果整体宽高改变的过渡效果两个界面布局的过渡效果带水波纹布局的效果几行代码实现转圈圈的效果界面翻转

文章目录写在前面带路径运动的过渡动画整体缩放的效果整体宽高改变的过渡效果两个界面布局的过渡效果带水波纹布局的效果几行代码实现转圈圈的效果界面翻转的效果 写在前面

由于我前面写了N多篇文章,但是还是感觉缺少一些相关的生动的例子,所以分析一些,手写一些。

带路径运动的过渡动画

在这里插入图片描述
最近MIUI 12 更新,我发现它又一个界面启动的转场过渡效果还不错,是带有抛物线的效果,所以在这里也写一个带抛物线的转场过渡效果.

大家可以发现,从Activity 跳转 Activity 的时候,有一个弧度的,这就是在共享过渡动画的基础添加的效果。

涉及知识点

过渡/转场动画:
Android动画了解—转场/过渡(Transition) 动画

实现代码(超级简单)

// XiaomiDemoActivity 的代码
ViewCompat.setTransitionName(view, "ShardTest");
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(XiaomiDemoActivity.this,
                view, "ShardTest");
// 启动
Intent intent = new Intent(this, XiaoMiHomeActivity.class);
intent.putExtra("res", res);
startActivity(intent, options.toBundle());
// XiaoMiHomeActivity 的代码
// XML需要设置共享元素一样的名称
// 设置运动轨迹的效果     
ArcMotion arcMotion = new ArcMotion();
rcMotion.setMinimumVerticalAngle(90f);
getWindow().setSharedElementEnterTransition(changeBounds);
getWindow().setSharedElementExitTransition(changeBounds);
// 设置 XiaoMiHomeActivity 传过来的图片资源.
Intent intent = getIntent();
int res = intent.getIntExtra("res", R.drawable.mitv_icn_game);
shareIv.setImageResource(res);

XimoMiHomeActivity源码

XiaoMiDemoActivity源码

整体缩放的效果

我们看到 MIUI 12 屏解锁后,桌面会整体缩放回来,这里的缩放涉及到每个图标,我们就来分析下吧.
在这里插入图片描述

涉及的知识点:

过渡/转场动画:
Android动画了解—转场/过渡(Transition) 动画 当然属性动画也能做,不过用这种方式就更简单一些

代码实现方式:

Transition explode = new Explode();
explode.setDuration(888);
TransitionManager.beginDelayedTransition(mLauncherRv, explode);
mLauncherRv.setAdapter(new LauncherAdapter());

当然要完成小米那种更流畅的方式,肯定没有那么简单,很多细节还需要慢慢调整,这里只是写一个小DEMO,给大家讲解下思路.
在这里插入图片描述
DEMO源码

整体宽高改变的过渡效果

这里再次蹭一下 MIUI 12 的动画热点,还是拿出MIUI 的动效来看看,这里如何去实现呢?来看例子
在这里插入图片描述

涉及的知识点:

相关代码:

先去打球,晚上回来补齐

两个界面布局的过渡效果

在这里插入图片描述

带水波纹布局的效果

在这里插入图片描述

涉及的知识点:

View绘制流程(draw, onDraw):
不熟悉自定义View,可以复习下 自定义View 的绘制draw
绘制的相关知识点(Path,Region.Op):
Path 使用了 cubicTo(贝塞尔),moveTo,lineTo

代码实现

Path mPath = new Path();
Region.Op mRegionOp = Op.INTERSECT;
// draw 是绘制自身与子控件的地方.
public void draw(final canvas canvas) {
 	try {
    	canvas.save();
		canvas.clipPath(mPath, mRegionOp);
		super.draw(canvas);
	} finally {
		canvas.restore();
	}
}
// 设置剪切掉的路径
public void revealForPercentage(float percent) {
	path.reset();
	path.moveTo(percent, 0f);
	path.lineTo(0f, 0f);
	path.lineTo(0f, getHeight());
	path.lineTo(percent, getHeight());
	path.close();
	invalidate();
}
//

在这里插入图片描述

LiquidSwipe源码

将cubicTo(贝塞尔)加上去后,最终的效果图如下:
在这里插入图片描述

源码查看

几行代码实现转圈圈的效果

众所众知,进度变化的时候,是很刻板的,没有过渡的效果,当然要实现也很简单,使用 属性动画,也可以做,但是这里我们介绍使用 过渡动画来做,要更简单一些。
在这里插入图片描述

涉及知识点:

过渡动画:
Android动画了解—转场/过渡(Transition) 动画

代码实现(超级简单)

// 保存之前的状态
TransitionManager.beginDelayedTransition(
(ViewGroup) findViewById(R.id.root_anim_layout), new ProgressTransition());
mProgressBarH.setProgress(value);

在这里插入图片描述
这样的话,圆形的进度条也可以这样做哦,看效果图
在这里插入图片描述
具体源码(setProgressTest)

界面翻转的效果

在这里插入图片描述

涉及的知识点:

属性动画:
ValueAnimator 或者 ObjectAnimatro 也可以.

相关代码:

ViewCompat.setPivotX(mLauncherRv, -mLauncherRv.getHeight());
ValueAnimator valueAnimator = ValueAnimator.ofFloat(1.0f, 0.0f);
valueAnimator.setInterpolator(new BounceInterpolator());
valueAnimator.addUpdateListener(new AnimatorUpdateListener() {
	@Override
	public void onAnimationUpdate(final ValueAnimator animation) {
		float value = (float) animation.getAnimatedValue();
		mLauncherRv.setRotation(-90 * value);
	}
});
valueAnimator.setDuration(1888);
valueAnimator.start();

在这里插入图片描述
DEMO源码

原Flourish源码

Android动画了解系列文章

冰雪情缘TV 原创文章 53获赞 28访问量 2万+ 关注 私信 展开阅读全文
作者:冰雪情缘TV


--结束END--

本文标题: Android动画了解—一些项目案例分析

本文链接: https://lsjlt.com/news/29779.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android动画了解—一些项目案例分析
    文章目录写在前面带路径运动的过渡动画整体缩放的效果整体宽高改变的过渡效果两个界面布局的过渡效果带水波纹布局的效果几行代码实现转圈圈的效果界面翻转...
    99+
    2022-06-06
    案例分析 Android
  • Android编程中Tween动画和Frame动画实例分析
    本文实例讲述了Android编程中Tween动画和Frame动画实现方法。分享给大家供大家参考,具体如下: Animation主要有两种动画模式:Tween动画和Frame动画...
    99+
    2022-06-06
    frame Android
  • Android动画之小球拟合动画的示例分析
    这篇文章给大家分享的是有关Android动画之小球拟合动画的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Android动画之小球拟合动画实例实现效果:动画组成:通过三阶贝塞尔曲线来拟合圆,拟合系数的由来...
    99+
    2023-05-31
    android
  • 在Android项目中实现一个点赞动画
    在Android项目中实现一个点赞动画?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体内容如下MainActivity.java代码:package siso.likea...
    99+
    2023-05-31
    android roi 目中
  • Android动画之TranslateAnimation用法案例详解
    我们在实际的开发过程中,有很多地方需要使用TranslateAnimation,本文是爱站技术频道小编为大家做的简单介绍,下面是详解Android 动画之TranslateAnima...
    99+
    2024-04-02
  • Centos8.3、docker部署springboot项目实战案例分析
    引言 目前k8s很是火热,我也特意买了本书去学习了一下,但是k8s动辄都是成百上千的服务器运维,对只有几台服务器的应用来说使用k8s就有点像大炮打蚊子。只有几台服务器的应用运维使用传...
    99+
    2024-04-02
  • SpringCloud基于RestTemplate微服务项目案例分析
    本篇内容主要讲解“SpringCloud基于RestTemplate微服务项目案例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringCloud基于RestTemplate微服务项目案...
    99+
    2023-06-30
  • Android Activity共享元素动画示例解析
    目录正文TransitionManager介绍Scene(场景)生成场景Transition(过渡)OverlayView和ViewGroupOverlayGhostViewActi...
    99+
    2024-04-02
  • vuex项目结构目录及一些简单配置的示例分析
    这篇文章主要为大家展示了“vuex项目结构目录及一些简单配置的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vuex项目结构目录及一些简单配置的示例分析...
    99+
    2024-04-02
  • SpringCloud基于RestTemplate微服务项目案例解析
    目录基于RestTemplate微服务项目一、构建父工程二、构建serverspringcloud-api(公共子模块)三、创建部门微服务提供者四、创建部门微服务消费者五、总结基于R...
    99+
    2024-04-02
  • vue移动端项目代码拆分的示例分析
    这篇文章给大家分享的是有关vue移动端项目代码拆分的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先代码拆分应该保证本地开发的时候只有一套代码,提取所有公共页面,并且分...
    99+
    2024-04-02
  • Android原生项目集成React Native的示例分析
    小编给大家分享一下Android原生项目集成React Native的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!开发环境准备首先按照开发环境搭建教程来安装React Native在安卓平台上所需的一切依赖软件(...
    99+
    2023-05-30
    android react native
  • Android开发之项目模块化的示例分析
    这篇文章主要为大家展示了“Android开发之项目模块化的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android开发之项目模块化的示例分析”这篇文章吧。项目协同项目协同,也叫多项目...
    99+
    2023-05-30
    android
  • Vue.js前端项目多语言方案的示例分析
    这篇文章给大家分享的是有关Vue.js前端项目多语言方案的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、通常有哪些内容需要处理总的来说,一个Web应用中,需要做多语言切换的内容常见的包括如下方面:模板...
    99+
    2023-06-20
  • Android实现旋转动画的两种方式案例详解
    目录练习案例效果展示前期准备自定义 View java代码编写方法一方法二易错点总结:练习案例 视差动画 - 雅虎新闻摘要加载 效果展示 前期准备 第一步:准备好颜色数组 res ...
    99+
    2024-04-02
  • Android 属性动画:一文让你彻底了解和掌握属性动画用法
    本文目录属性动画概述属性动画用法对象动画(ObjectAnimator)方法1:Java代码实现对象动画方法2:XML实现对象动画值动画(Val...
    99+
    2022-06-06
    属性 动画 Android
  • vue移动端项目缓存问题的示例分析
    这篇文章给大家分享的是有关vue移动端项目缓存问题的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。先描述下问题场景:A页面->B页面->C页面。假设A页面是列...
    99+
    2024-04-02
  • RequireJS案例分析:看看如何用RequireJS构建真实项目
    模块定义 在 RequireJS 中,模块是 JavaScript 代码的独立单元,每个模块都有自己的作用域和依赖关系。模块的定义十分简单,只需要使用 define() 函数即可,该函数接受三个参数: 模块的名称(字符串) 模块的依赖...
    99+
    2024-02-11
    RequireJS 模块化 依赖管理 异步加载 代码组织
  • vue自动路由之单页面项目的示例分析
    这篇文章给大家分享的是有关vue自动路由之单页面项目的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这是一个什么项目?答:这是一个单页面的vue.js项目,主要为了实现在...
    99+
    2024-04-02
  • idea启动项目很久很慢的一种解决方案
    一、问题描述         IntelliJ idea 在启动项目时,很久很慢。 二、解决         在不买个更强更贵的前提下,有以下一种解决方案(ಥ_ಥ)          ​​​​​​​    1、方案依据         一般...
    99+
    2023-09-04
    intellij-idea java ide
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作