Android面试题(四)——动画

引言

Android动画可以帮助我们实现一些炫酷的效果,掌握动画主要在于练习。在面试中更多地根据实际需求回答。

面试题

  1. 下面哪一项不属于android的动画类型?

**A** Tween
**B** Alpha
**C** Frame
**D** Animation

正确答案:D
解析:Android动画有三种:View动画、帧动画、属性动画
Tween(补间动画),即View动画,包括了平移(Translate)、缩放(Scale)、旋转(Rotate)、透明度(Alpha),所以A、B正确。
Frame(帧动画)循序播放一组预先定义好的图片,所以C正确
属性动画(Property Animation)类名是:ValueAnimator、ObjectAnimator

  1. 下面属于android的动画分类的有?(android3.0之前)
    A Tween
    B Frame
    C Draw
    D Animation
    正确答案:AB
    解析:两种,一种是Tween 动画、还有一种是 Frame 动画。 Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化 ; 另一种 Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。属性动画是android3.0之后才有的。

  2. 动画占用大量内存,如何优化?

- **OOM问题**:这个问题主要出现在帧动画中,当图片数量较多且图片较大时就极易出现OOM,这个在实际开发中要尤其注意,尽量避免使用帧动画。
- **内存泄露**:在属性动画中有一类无限循环的动画,这类动画需要在Activity退出时及时停止,否则将导致Activity无法释放从而造成内存泄露,通过验证后发现View动画并不存在此问题。
  1. 使用动画的注意事项

  2. OOM问题:这个问题主要出现在帧动画中,当图片数量较多且图片较大时就极易出现OOM,这个在实际开发中要尤其注意,尽量避免使用帧动画。
  3. 内存泄露:在属性动画中有一类无限循环的动画,这类动画需要在Activity退出时及时停止,否则将导致Activity无法释放从而造成内存泄露,通过验证后发现View动画并不存在此问题。
  4. 兼容性问题:动画在3.0以下的系统有兼容性问题,在某些特殊场景可能无法正常工作,因此要做好适配工作。
  5. View动画的问题:View动画是对View的影像做动画,并不是真正改变View的状态,因此有时候会出现动画完成后View无法隐藏的现象,即setVisibility(View.GOEN)失效了,这个时候只要调用view.clearAnimation()清除View动画即可解决问题。
  6. 不要使用px:在进行动画的过程中,要尽量使用dp,使用px会导致在不用的设备上有不用的效果。
  7. 动画元素的交互:从3.0开始,将view移动(平移)后,属性动画的单击事件触发位置为移动后的位置,但是View动画仍然在原位置。在Android3.0以前的系统中,不管是View动画还是属性动画,新位置都无法触发单击事件同时,老位置仍然能触发单击事件(因为属性动画在Android3.0以前是没有的,是通过兼容包实现的,底层也是调用View动画)。
  8. 硬件加速:使用动画的过程中,建议开启硬件加速,这样会提高动画的流畅性。
    开启方法:
    在你的Android manifest文件,添加hardwareAccelerated属性就可以了。可以给整个application添加,也可以单独给一个acitivty添加,该属性默认值为false;
<application android:hardwareAccelerated="true">    
            <activity ... />    
            <activity android:hardwareAccelerated="true" />
            <activity android:hardwareAccelerated="false" />
</application>

推荐

我的个人博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,858评论 25 709
  • 介绍自己负责的部分,如何实现的。 框架的搭建排查问题以及结解决方式兼容性保证性能优化上线之后模块导致crash的比...
    黄海佳阅读 14,522评论 6 350
  • 前几天整理了Java面试题集合,今天再来整理下Android相关的面试题集合.如果你希望能得到最新的消息,可以关注...
    Boyko阅读 9,266评论 8 135
  • 我上次说到渡劫,有些朋友跟我说觉得虚幻。其实,做任何事都会有一个登门入室的阶段。就是这件事你做久了,终于感到这事在...
    醉花心阅读 5,526评论 33 50
  • “一口气吃下了十七个冰皮月饼会死吗?” 这是许满满刚刚发布的动态。看到后,我立马打了电话给她。因为我知道,这很有可...
    三千口阅读 3,294评论 0 0

友情链接更多精彩内容