在我们玩手机的过程中,如果我们点击某一个页面时,会出现一个页面动画加载或者动画效果的现象。现在我们就来看看App开发中是如何实现动画效果的。

目录

动画的分类

逐帧动画:

补间动画:


动画的分类

在常见的app使用的动画中,常见的就是逐帧动画、补间动画和属性动画,这三种动画各有优点,下面我们来看看它们是如何是实现的:

逐帧动画:

逐帧动画,顾名思义就是动画的内容是由一张张图片构成的,所以我们只需要设置这些图片的展现次序以及展现的实现就可以实现逐帧动画的效果。

要想实现逐帧的动画,首先我们得有几张动画,我准备了下面6张图片,我计划让它们像放幻灯片一样每隔一段时间来显示:

准备完了照片,接下来就该创建一个动画的列表来播放这些图片:我们在drawable文件下面新创建一个animation(动画)类型的xml文件用于存储这几张要按动画效果播放的图片,这样这些图片就可以按照逐帧的形式展现了。创建完后我们记得将下面红圈位置改成animation-list,这样才能创造一个animation类型的控件:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:tools="http://schemas.android.com/tools"xmlns:android="http://schemas.android.com/apk/res/android"tools:ignore="MissingDefaultResource"><item android:drawable="@drawable/pic2" android:duration="220"/><item android:drawable="@drawable/pic2" android:duration="220"/><item android:drawable="@drawable/pic3" android:duration="220"/><item android:drawable="@drawable/pic4" android:duration="220"/><item android:drawable="@drawable/pic5" android:duration="220"/><item android:drawable="@drawable/pic6" android:duration="220"/></animation-list>

准备完了播放的动画,接下来我们就要准备一个Relativelayout图层来容纳这个动画xml文件,这里的xml文件可以近似看成一张图片,只不过是一张会动的图片,所以我们处理它们的时候可以按照类似图片的方式处理。我们设置背景就是这个动画xml文件,这样就可以将这个动画xml文件逐帧在背景上显示了,这里也可以调整出一个区域来设置设置这张“图片”,这样它不是全屏播放。因为下面我们设置放置这张“图片”的位置是Relativelayout的backgrou即背景。既然我们图片可以作为背景,那么图片也可以在一个区域中显示,所以我们也可以划出一个区域来放置:

    <RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/animation"android:id="@+id/Relid"/>

设置完这些我们就可以直接在Main程序里面创建这个图层了,首先我们必须要创建一个Relativelayout的图层,并且将之前我们设置的图层通过findbyid的形式找到并且传递给创建的变量,然后再实例化一个动画类型的变量animation,为了触发这个动画效果,我们还设置调用Relativelayout里面的点击效果函数来设置点击开启动画效果。动画效果的开始就是调用动画类型变量animation里的start方法,结束就是调用stop方法:

    protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);RelativeLayout relativeLayout = findViewById(R.id.Relid);AnimationDrawable animationDrawable = (AnimationDrawable) relativeLayout.getBackground();relativeLayout.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View view) {animationDrawable.start();}});}

补间动画:

在我们看完逐帧动画之后,下面我们就来看一下补间动画。所谓的补间动画就是操作图片进行平移、缩放、旋转和透明度设置的操作。

要对图片进行操作,首先我们要准备一张图片:

    <ImageViewandroid:id="@+id/img1"android:layout_width="0dp"android:layout_height="300dp"android:layout_marginStart="54dp"android:layout_marginTop="20dp"android:layout_marginEnd="54dp"android:src="@drawable/pic5"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />

准备完了要去操作的图片,进行补间动画的操作我们需要在res文件夹下新创一个文件夹,并且命名为“anim”一定要叫anim,其它名字没有Animation Resource file的文件),然后再在这个文件夹下面创建出一个Animation Resource file的文件:

下图为改了anim名字后的文件,里面没有Animation Resource file的文件:

这个Animation Resource file文件编写记录的是我们的操作,补间动画对图片有四种操作:Alpha、roatate、translate、scales。分别对应:透明度变化、旋转、平移和放缩。下面我们来看看四种变换的实现方式:

alpha:

alpha表示对图片进行透明度处理,当我们在anim目录下新创一个Animation Resource file后,我们会得到一个set的节点,我们再在节点里面创建一个aplha节点,如下图所示。这个节点就是用来配置图片透明度处理信息的。fromalpha表示开始时图片的透明度,这里选择完全不透明,我想要的效果是图片一开始完全不透明,我点击后它会逐渐变透明,所以toalpha我选择0。这里有一个很重要的设置就是duration,它表示这个图片透明度变化的持续时间,必须要设置。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:fromAlpha="1"android:toAlpha="0"android:duration = "6000"/>
</set>

变化效果(变化过程中):

rotate:

这个表示图片旋转动画,与前面类似,只不过配置方法不同。这里的fromDegrees表示开始时图片的角度,我设置为0度,旋转完成后的角度为toDegrees,我设置为180度,旋转轴为pivotX和pivotY,它们分别表示旋转轴在图片的哪个位置,50%、50%表示在X、Y轴一半处,也就是中心。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><rotateandroid:fromDegrees="0"android:toDegrees="180"android:pivotX="50%"android:pivotY="50%"android:duration = "6000"/>
</set>

旋转效果(变化过程中):

 translate:

这种变换是平移变换,既然是平移,就需要初始位置和末尾位置,初始位置fromXdelta和fromYDelta就直接设置为0,0。末尾位置就设置为移动量为X是20和Y是300处。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:fromXDelta="0"android:fromYDelta="0"android:toXDelta="20"android:toYDelta="100"android:duration = "6000"/>
</set>

移动过程:

scale:

这个操作表示缩放效果,它也要有一个缩放的中心轴。这里我们就照旧设置为中点。既然缩放,那就免不了有缩放前的比例和缩放后的比例。缩放前的fromXScale和fromYScale我们就设置为1,就是原始状态。而缩放后的toXScale和toYScale就设置为都是0.5即可。这个变换表示将长、宽图片按0.5比例缩小。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scaleandroid:pivotX="50%"android:pivotY="50%"android:fromXScale="1"android:fromYScale="1"android:toXScale="0.5"android:toYScale="0.5"android:duration = "6000"/>
</set>

缩放效果(变化过程中):

了解完四种变化效果,接下来就要将变化效果设置到图片中去了。首先照旧在Main方法里创建出来图片,并且设置点击方法。这里我们要想用到动画效果,就需要将动画效果加载到图片中。首先我们实例化出一个动画效果的对象an。然后将这个对象通过AnimationUtils的loadAnimation方法加载到an里面这个loadAnimation方法两个参数,一个是上下文,另一个是我们之前创建的4中动画效果,要加载哪一种就找到它将它传进去即可。最后就是调用图片控件的startAnimation方法,将动画效果的对象作为参数传递进去即可。

ImageView imageView = findViewById(R.id.img1);imageView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Animation an = AnimationUtils.loadAnimation(MainActivity.this, R.anim.scales);imageView.startAnimation(an);}});

​​​​​​​

【Android】App开发-动画效果篇相关推荐

  1. Android App开发动画特效之实现百叶窗动画和马赛克动画效果实战演示(附源码和演示视频 可直接使用)

    需要图片集和源码请点赞关注收藏后评论区留言~~~ 一.实现百叶窗动画 合理运用图层规则可以实现酷炫的动画效果,比如把图片分割成一条一条,接着每条都逐渐展开,这便产生了百叶窗动画,把图片等分为若干小方格 ...

  2. Android App开发动画特效中帧动画和电影淡入淡出动画的讲解及实战(附源码和演示视频 简单易懂)

    需要图片集和源码请点赞关注收藏后评论区留言~~~ 一.帧动画 Android的动画分为三类,帧动画,补间动画和属性动画.其中帧动画是实现原理最简单的一种,跟现实生活中的电影胶卷类似,都是在短时间内连续 ...

  3. Android App开发动画特效之利用滚动器实现平滑翻页(附源码和演示 简单易懂)

    需要图片集请点赞关注收藏后评论区留言~~~ 一.利用滚动器实现平滑翻页 在日常生活中,平移动画比较常见,有时也被称为位移动画,左右翻页和上下滚动其实都用到了平移动画,譬如平滑翻书的动画效果,就是位移动 ...

  4. 送书啦~《Android App开发进阶与项目实战》

    双十一刚结束,受我的编辑王老师所托,帮忙宣传<Android App开发进阶与项目实战>并赠送五本新书.该书介绍了很多新的技术,包括人工智能相关的. 1融合众多前沿技术 展现人工智能时代A ...

  5. 5G 时代的 Android App 开发入门与项目实战

    随着移动互联网的持续发展,Android系统从智能手机逐步拓展到平板电脑.智能电视.车载大屏.智能家居.智能手表等诸多设备,Android开发依然是前景可期的IT岗位. 当然,整个社会正在迈向5G时代 ...

  6. Android app开发捷径,让你少去踩坑

    Android APP开发完成后,通常需要在哪些机型上进行测试? 开发Android APP时,需要考虑的分辨率有哪些? 目前华为.三星和小米市场占有率是遥遥领先的,华为各机型.三星Note2.Not ...

  7. Android APP开发

    Android APP开发 Android 是基于Linux平台的.开源的.智能手机操作系统.Android APP开发现在使用比较广泛的程序语言是Java,Java是安卓APP开发的基础,我们在上学 ...

  8. Android APP开发需求文档范本

    Android  APP开发需求文档范本 软件需求文档格式的标准写法 1.引言 1.1 编写目的 • 阐明开发本软件的目的: 1.2 项目背景 • 标识待开发软件产品的名称.代码: • 列出本项目的任 ...

  9. android开发入门与实践_我的新书《Android App开发入门与实战》已经出版

    前言 工作之余喜欢在CSDN平台上写一些技术文章,算下时间也有两三年了.写文章的目的一方面是自己对技术的总结,另一方面也是将平时遇到的问题和解决方案与大家分享,还有就是在这个平台上能和大家共同交流. ...

最新文章

  1. spring配置datasource三种方式 数据库连接
  2. 「追根溯源」Ruby数组的uniq方法
  3. oracle已经有了注释符再注释,关于oracle的注释位置
  4. 梁鑫:重构 - 在美股行情系统的实践
  5. 传苹果正与米高梅谈判 拟购买新007电影流媒体版权
  6. php 解压zip到目录下,php 解压zip压缩包内容到指定目录的实例
  7. 常用工具及插件下载, [复制链接]
  8. 基于标记不确定性和类别不平衡的语义分割在植被制图中的应用(soybean+FCN_segNet+newloss)
  9. 开课吧:常见的数据可视化分析工具有哪些?
  10. 高质量前端资源周刊(第三十周)
  11. 今日,立秋。秋季养生篇。
  12. vue 代码格式化(VS code)
  13. Vue前端页面关键词快速搜索方法
  14. 笔记本计算机虚拟技术,ThinkPad笔记本电脑如何开启CPU虚拟化技术的图文教程
  15. wsl2中安装QGC
  16. SpringMVC学习-helloSpringMVC
  17. Maven环境搭建及配置
  18. Win 10 GTX 960下 Pytorch的安装与验证
  19. HDUOJ 2844 Coins
  20. iOS 10:四、因苹果健康导致闪退 crash

热门文章

  1. ADC 模数转换实验
  2. 如何将ofd格式文档转换成Word
  3. scala基本操作分解实战
  4. python缩小图片_python如何缩小图像
  5. 微博短视频百万级高可用、高并发架构如何设计?
  6. 在哪打开用户和计算机,控制面板在哪 打开控制面板的几种方法
  7. Javascript:公农历节日周年计算
  8. RTX 3080和RTX 2080 Ti哪个好
  9. 苹果中国首家直营店选址北京三里屯
  10. 如何从文件夹打开dos界面/命令行工具