前言

提示:秋招在即,计蒙准备在国庆假期结束前整理一套Android初级面试题籍,希望对大家有所帮助

提示:以下是本篇文章正文内容

动画

1、Android 中的动画有哪几类

帧动画、补间动画、属性动画

2、动画能组合在一起使用么?

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

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

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

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

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

3、插值器的种类有哪些?

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

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

LinearInterpolator:以常量速率改变

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

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

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

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

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

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

4.如何自定义插值器

写一个类实现Interpolator接口,

Interpolator是一个空的接口继承了TimeInterpolator接口,

定义getInterpolation方法即可

5.如何修改 Activity 进入和退出动画

可以通过两种方式,一是通过定义 Activity 的主题,二是通过覆写 Activity 的overridePendingTransition 方法。

事件处理

1、Handler 机制

Handler能充当子线程和主线程之间的桥梁。

通常将 Handler 声明在 Activity 中,然后覆写 Handler 中的 handleMessage 方法,当子线程调用 handler.sendMessage()方法后 handleMessage 方法就会在主线程中执行。

这里面除了 Handler、Message 外还有隐藏的 Looper 和 MessageQueue 对象。在主线程中 Android 默认已经调用了 Looper.preper()方法,调用该方法的目的是在 Looper 中

创建 MessageQueue 成员变量并把 Looper 对象绑定到当前线程中。当调用 Handler 的sendMessage(对象)方法的时候就将 Message 对象添加到了 Looper 创建的 MessageQueue队列中,同时给 Message 指定了 target 对象,其实这个 target 对象就是 Handler 对象。主线程默认执行了 Looper.looper()方法,该方法从 Looper 的成员变量 MessageQueue 中取出 Message。

然后调用 Message 的 target 对象的 handleMessage()方法。这样就完成了整个消息机制。

2、onTouch 和 onTouchEvent 有什么区别

这两个方法都是在 View 的 dispatchTouchEvent 中调用的,onTouch 优先于 onTouchEvent执行。如果在 onTouch 方法中通过返回 true 将事件消费掉,onTouchEvent 将不会再执行。

另外需要注意的是,onTouch 能够得到执行需要两个前提条件,第一 mOnTouchListener 的值不能为空,第二当前点击的控件必须是 enable 的。因此如果你有一个控件是非 enable 的,那么给它注册 onTouch 事件将永远得不到执行。对于这一类控件,如果我们想要监听它的 touch 事件,就必须通过在该控件中重写 onTouchEvent 方法来实现。

3、子线程中能不能 new handler?为什么?

不能,如果在子线程中直接 new Handler()会抛出异常

当我们在dao主线程中创建Handler对象的时制候没有问题,是因为主线程会自动调用Looper.prepare()方法去给当前主线程创建并设置一个Looper对象,随意在Handler构造函数中从当前线程的对象身上拿到这个Looper。

但是子线程中并不会自动调用这个方法,所以要想在子线程中创建Handler对象就必须在创建之前手动调用Looper.prepare()方法,否则就会报错。

4、子线程发消息到主线程进行更新 UI,除了 handler 和 AsyncTask,还有什么?

1、用 Activity 对象的 runOnUiThread 方法更新,在子线程中通过 runOnUiThread()方法更新 UI:

2、用 View.post(Runnable r)方法更新 UI

5、为什么系统不建议在子线程访问UI?

Android的UI访问是没有加锁的,多个线程可以同时访问更新操作同一个UI控件。也就是说访问UI的时候,android系统当中的控件都不是线程安全的,这将导致在多线程模式下,当多个线程共同访问更新操作同一个UI控件时容易发生不可控的错误,而这是致命的。所以Android中规定只能在UI线程中访问UI,这相当于从另一个角度给Android的UI访问加上锁,一个伪锁。

关于整理问题

当全部整理完毕后将整理成pdf格式,以方便阅读,文件获取如下图(10月8日后)!

android+下落+动画,完美起航-Android面试题之动画+事件处理篇相关推荐

  1. 高德 android 多边形中心点,完美起航-android高德地图画多边形,已知中心点宽高画矩形,实际距离千米转地图坐标距离...

    项目中用到mapabc 绘制矩形区域.客户只能手动选择中心点,并填写区域的宽和高,切单位为km.要求实时显示规划区域. 记录笔记. 第一步找到地图绘制多边形api polygon = map.addP ...

  2. android studio crashlytics,完美解决Android Studio集成crashlytics后无法编译的问题

    问题描述: 在用fabric集成后编译出现如下错误, Error:Cause: hostname in certificate didn't match: != OR OR build.gradle部 ...

  3. Android控件扫光动画,完美起航-AndroidTV控件获得焦点的扫光效果

    目录 前言 Android TV开发与手机开发最大的不同点就是焦点,TV常用的操作方式是遥控器,所以给用户一个醒目美观的焦点是至关重要的.很多产品经理在设计焦点的时候都会选择扫光的效果,比如小牧电视的 ...

  4. android sdk v28,完美起航-androidstudio编译出错:Androidresourcelinkingfailed

    问题描述 今天在Android studio通过模拟器运行app的时候,出现了以下错误: Android resource linking failed AAPT: D:\developer\andr ...

  5. Android面试题之动画+事件处理篇,安卓消息分发机制

    关于整理问题 前言 ================================================================= 提示:秋招在即,计蒙准备在国庆假期结束前整理一套 ...

  6. Android面试题之动画+事件处理篇

    动画+事件处理篇 前言 动画 1.Android 中的动画有哪几类 2.动画能组合在一起使用么? 3.插值器的种类有哪些? 4.如何自定义插值器 5.如何修改 Activity 进入和退出动画 事件处 ...

  7. android edittext不可复制_精选Android中高级面试题:性能优化,JNI,设计模式

    性能优化 1.图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理? 参考回答:首先我们要清楚图片的三级缓存是如何的: 如果内存足够时不回收.内存不够时就回收软引用对象 2.内存中 ...

  8. Android动画渲染过程及原理(matrix),matrix动画,动画优化

    -- 矩阵(Matrix), Matrix动画 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵.在物理学中,矩阵于电路学.力学.光学和量子物理中都 ...

  9. Android面试:整理了Android面试官最常问的174道面试题,让你秒变offer收割机

    本文是专为 Android 开发工程师准备的高薪面试真题汇总题库,涵盖历年大厂高频面试题总结+核心考点深度解析,可以帮助大家全面梳理知识点,并针对面试中可能遇到的问题进行深入分析,在众多面试者中脱颖而 ...

最新文章

  1. Android-Binder(一)
  2. SEO站内优化细节不可少,教你4个小技巧!
  3. 052_Function对象
  4. RTC 融合通信服务架构与场景应用 | 2021稀土开发者大会音视频专场
  5. LiveVideoStack冬季招聘(高级策划编辑,市场BD主管)
  6. 小程序--显示图形效果
  7. 传智播客全栈_播客:从家庭学生到自学成才的全栈开发人员
  8. 机械制图国家标准的绘图模板_如何使用p5js构建绘图应用
  9. JavaScript算法(实例一)完数 / 水仙花数 / 素数
  10. jQuery 自定义事件的学习笔记
  11. 侧信道实验实验三 S盒CPA侧信道攻击
  12. JDK动态代理的意义和用法
  13. 【iOS越狱开发】iOS越狱步骤1之环境搭建
  14. win 11 大更新,新功能爱了爱了。
  15. 如何获取微信小程序包
  16. 2018年Android面试题含答案--适合中高级
  17. Mac 使用 之 Permission denied XXX
  18. jq 实现无缝轮播图
  19. pcie扰码的作用_物理层逻辑知识,关于扰码器需要遵循的规则
  20. 互联网行业人才的四大特点:不具备这些素质,如何能改变世界?

热门文章

  1. PS 去除图片中的字
  2. 天才基本法--裴之的“自动战棋“代码
  3. 5G关键厂商推动2019年推出下一代网络;大疆发布首条企业级无人机产品Matrice 200│IoT黑板报...
  4. 纯CSS Material Design风格按钮
  5. 【安卓R 源码】获取音频焦点和释放音频焦点
  6. 小酷智慧地图3D导览v1.0.87打卡定位 地图打卡
  7. Swift上写百度地图记录
  8. IOTA--帮你构建安全的边缘计算网络
  9. matlab 雷电,利用MATLAB实现对雷电监测数据的分析和绘图
  10. 01.奇特的一生——柳比歇夫一生的秘密