动画详解

参考:https://www.jianshu.com/p/2fcd4e734a01

三种动
  • 1.视图动画(view Animation)

  • 2.帧动画()

  • 3.属性动画

插值器(Interpolator)与估值器(TypeEvaluator)

面试题

  • 1.帧动画在使用时需要注意什么?

通过动画可以实现一些比较绚丽的效果,但是在使用过程中,也需要注意一些事情,主要分为下面几类。

1.OOM问题

这个问题主要出现在帧动画中,当图片数量较多且图片较大时就容易出现OOM,这个在实际开发中尤其注意,尽量避免使用帧动画。

2.内存泄漏

在属性动画中有一类无线循环的动画,这类动画需要在Activity退出时及时停止,否则将会导致Activity无法释放从而造成内存泄漏,通过验证后发现View动画并不存在此问题。

3.兼容性问题

动画在3.0以下的系统上有兼容性问题,在某些特殊场景可能无法正常工作,因此要做好适配工作。

4.View动画的问题

View动画是对View的影像做动画,并不是真正地改变View地状态,因此有时会出现动画完成后View无法隐藏地现象,即setVisibility(View.GONE)失效了,这个时候只要调用view.clearAnimation()清楚View动画即可解决此问题。

5.不要使用px

在进行动画的过程中,要尽量使用dp,使用px会导致在不同的设备上有不同的效果。

6.动画元素的交互

将view平移后,在Andre 3.0以前的系统上,不管是View动画还是属性动画,新位置均无法交互,同时老位置仍然可以触发单击事件。尽管View以及在视觉上不存在了,将View移回原位以后,原位置的单击事件继续生效。从3.0开始,属性动画的单击事件触发为止为移动后的位置,但是View动画仍然在原位置。

7.硬件加速

使用动画的过程中,建议开启硬件加速,这样会提高动画的流畅性。

  • 2.View动画和属性动画的区别?

View动画执行之后并未改变View的真实布局属性值。切记这一点,譬如我们在Activity中有一个 Button在屏幕上方,我们设置了平移动画移动到屏幕下方然后保持动画最后执行状态呆在屏幕下方,这时如果点击屏幕下方动画执行之后的Button是没 有任何反应的,而点击原来屏幕上方没有Button的地方却响应的是点击Button的事件。

属性动画弥补了View动画的缺陷,你可以为一个对象的任意属性添加动画,对象自己的属性会被真的改变;当对象的属性变化的时候,属性动画会自动刷新屏幕;属性动画改变的是对象的真实属性,而且属性动画不止用于View,还可以用于任何对象。

  • 3.属性动画出现的版本和原因(或者关于属性动画的其他问题)?

出现的版本:Android 3.0(API 11)后才提供的一种全新动画模式,出现原因为作用对象局限于View,没有改变View的属性,只是改变视觉效果,动画效果单一。

属性动画简单说明(二类三方):

二类:ValueAnimator、ObjectAnimator是其重要的两个类。

三方:ValueAnimator有ofInt、ofFloat、ofObject三个重要的方法

三个方法的作用:

1.创建动画实例

2.将传入的多个参数进行平滑过渡:此处传入0和1,表示将值从0平滑过渡到1 ,如果传入了3个Int参数 a,b,c ,则是先从a平滑过渡到b,再从b平滑过渡到c,以此类推,他们内置了估值器

插值器和估值器:

插值器(Interpolator):决定值的变化模式

估值器(TypeEvaluator):决定值的具体变化数值

  • 4.动画能组合在一起使用么?

可以将动画组合在一起使用AnimatorSet,

AnimatorSet.play() 播放当前动画的同时可以

.with() :将现有动画和传入的动画同时执行

.after() :将现有动画插入到传入的动画之后执行

.before() : 将现有动画插入到传入的动画之前执行

  • 5.ObjectAnimator需要操作的view的属性(Property)有

1、Alpha 控制View的透明度

2、float TranslationX 控制X方向的位移

3、float TranslationY 控制Y方向的位移

4、float ScaleX 控制X方向的缩放倍数

5、float ScaleY 控制Y方向的缩放倍数

6、float Rotation 控制以屏幕方向为轴的旋转度数

7、float RotationX 控制以X轴为轴的旋转度数

8、float RotationY 控制以Y轴为轴的旋转度数

  • 6.补间动画都有哪些(Tween动画有哪些|怎么旋转、平移、缩放、透明度)?

补间动画由Animation类来实现具体效果,

包括平移(TranslateAnimation)、

缩放(ScaleAnimation)、

旋转(RotateAnimation)、

透明度(AlphaAnimation)

四个子类,四种变化。

  • 7.项目实现过哪些动画、怎么实现的?

帧动画、补间动画、属性动画都用过

例如下拉刷新时头布局里我们使用了帧动画

页面里有个弹出窗口使用了补间动画,还加入了BounceInterpolator插值器的效果

[ 进度条 ] 使用了属性动画

  • 8.Android动画原理

Animation框架定义了透明度,旋转,缩放和位移几种常见的动画,而且控制的是整个View
实现原理是每次绘制视图时View所在的ViewGroup中的drawChild函数获取该View的Animation的Transformation值

然后调用canvas.concat(transformToApply.getMatrix()),通过矩阵运算完成动画帧,如果动画没有完成,继续调用invalidate()函数,启动下次绘制来驱动动画

动画过程中的帧之间间隙时间是绘制函数所消耗的时间,可能会导致动画消耗比较多的CPU资源,最重要的是,动画改变的只是显示,并不能相应事件

  • 9.插值器用过没(插值器的种类有哪些|怎么自定义插值器)?

插值器决定值的变化模式,默认的种类有九个。

默认种类有:

AccelerateDecelerateInterpolator :在动画开始与结束的地方速率改变比较慢,在中间的时候加速

AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始速率变化加快

LinearInterpolator:以常量速率改变

AnticipateInterpolator:开始的时候向后然后向前甩

CycleInterpolator:动画循环播放特定的次数,速率改变沿着正弦曲线

PathInterpolator:动画执行的效果按贝塞尔曲线

anticipateOvershootInterpolator:开始的时候向后然后向前甩一定值后返回最后的值

OvershootInterpolator:向前甩一定值后再回到原来位置

BounceInterpolator:动画结束的时候有弹起效果

自定义插值器:

写一个类实现Interpolator接口,Interpolator是一个空的接口继承了TimeInterpolator接口,定义getInterpolation方法即可

android 动画面试相关推荐

  1. Android开发面试经——2.常见Android基础笔试题

     标签: androidAndroid基础Android面试题Android笔试题 2015-03-12 15:04 3361人阅读 评论(3) 收藏 举报  分类: Android开发(29)  版 ...

  2. android系统面试问答_Android面试问答

    android系统面试问答 Android is the most popular operating system for mobile phone. Android apps are very p ...

  3. android路由器,Android工程师面试该怎么准备?年薪50W

    金九银十,给大家整理了月薪20K的Android面试题必问集锦,希望让大家查漏补缺,最后祝大家都能在金九银十找到一份不错的工作! 个人经历 其实我有好长一段时间没有正规的面试过了,大约3年的时间里面, ...

  4. android 帧动画监听,Android 动画(View动画,帧动画,属性动画)详细介绍

    0. 前言 Android动画是面试的时候经常被问到的话题.我们都知道Android动画分为三类:View动画.帧动画和属性动画. 先对这三种动画做一个概述: View动画是一种渐进式动画,通过图像的 ...

  5. 【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Android高级篇上)...

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. A awesome android expert interview questions a ...

  6. 来一份Android动画全家桶

    前言 自上次<MTRVA2.0来啦>发布后,马上就有小伙伴问我有哪些Android动画,过了一段时间又有小伙伴问我啥时候发布Android动画.其实,在写<MTRVA2.0来啦> ...

  7. Android工程师面试准备知识点

    Android工程师面试准备知识点 听+7哥说,把下面的全弄懂,面试必过,所以我就试着去把所有题目补充了一下,各位能耐的网友们,如果有吐槽或者补充的尽管给我留言,在这里谢过大家了. 1.   andr ...

  8. Android 笔试/面试,常见问题整理

    Android 笔试/面试,常见问题整理 Android学习书籍下载的网址:http://pan.baidu.com/s/1slCSUcP 上面网盘里面的书籍都是PDF格式的,有面试宝典,疯狂java ...

  9. 史上最强vue总结来了,Android校招面试指南

    概述 想了很久怎么样可以让文章的标题不那么悲观,但是各种文案都在我脑海里面不断的被否定,要么是不那么抓眼球,要么是立意不匹配.最后想了想,这个标题是真的符合我最近的感悟. 希望看过文章,能有同感的朋友 ...

最新文章

  1. deepin linux桌面设置,Deepin系统的桌面样式:高效模式和时尚模式
  2. [Flex] 组件Tree系列 —— 阻止用户点击选中Tree中分支节点
  3. hdu 4501(三维背包问题)
  4. php打补丁,PHPMailer库打补丁后漏洞仍然存在,怎么解?
  5. 持续更新的Zookeeper知识总结
  6. 表1 中的值 给表2
  7. 栈的顺序存储结构框架搭建
  8. JQuery input file 上传图片
  9. 基于麻雀搜索算法优化的SVM回归预测 - 附代码
  10. 分享几个特别好用且免费的图片/视频/gif/mp3压缩网站
  11. MySQL数据库中多表联合查询
  12. 基于FPGA的DHT11数字温湿度传感器测试
  13. 如何知道PDF是不是正常的A4大小尺寸?
  14. cad打开卡死_CAD启动时闪退怎么办?打开CAD就死机怎么办?
  15. 利用α-β搜索的博弈树算法编写一字棋游戏 python
  16. c语言输入任意长度字符串,读取不定长字符串输入
  17. c语言结构体编辑学生成绩管理,C语言基于结构体的学生信息管理系统实现
  18. 零基础学PHP10小时多媒体教学视频pdf
  19. 推荐python入门进阶到大神的书籍
  20. 用matlab求函数极限,matlab求解极限问题(limit函数的用法)

热门文章

  1. 单口RAM、双口RAM、FIFO三者的关系
  2. bjui关闭当前页及弹窗层,刷新当前页及弹窗层
  3. [GitHub] 创建仓库并使用基本的pull,push
  4. 关于Restful API与状态码的设计
  5. android视频采集与压缩,视频压缩 Android原生插件
  6. 一位博士的返乡笔记,深刻入骨!
  7. Eslint 强行将let 转化成const解决方法
  8. h264编码笔记(nal_ref_idc)
  9. 遥感图像融合c语言,一种多源遥感图像融合方法与流程
  10. pageoffice使用