博客
关于我
2021大厂Android面试经历,最全的BAT大厂面试题整理
阅读量:632 次
发布时间:2019-03-14

本文共 1800 字,大约阅读时间需要 6 分钟。

HTML重申后的优化版本:

前言Android开发的朋友最近面试经验上,有一个关于哈夫曼算法的题目没答好,导致面试官对算法基础有了更高的要求。下面分享一些关于数据结构和算法的学习建议。

如果之前有学过数据结构和算法,建议大家不定时的去刷刷算法题因为从面试的角度来讲,目前 BAT 和 TMD 等一线互联网企业或多或少都会有几个算法题,而对应届毕业生来说,算法的要求度则更高!这里可以分享一下我收集整理的数据结构算法题含答案。

面试官:说说view中的事件分发Android中事件分发机制是android中常见的问题,一般大家都知道view的分发事件是从view的 Views.dispatchTouchEvent()到 ViewGroup dispatchTouchEvent()和 onView890()'s方法的调用顺序回到View和VieGroup的 onTouchEvent(),而这个流程可以用以下规律总结:事件从ViewGroup的 dispatchTouchEvent()调用开始,依次经过拦截阶段,再到View的 dispatchTouchEvent(),然后是View的 onTouchEvent(),最后回到ViewGroup的 onTouchEvent()。不熟悉方法名的朋友可以简单说:先是ViewGroup的分发到拦截,再到View的分发,然后返回到View的触发,最后再回到ViewGroup的触发。

ViewGroup拦截拦截和分发是两个相互关联的概念。拦截的条件是ViewGroup通过其 dispatchTouchEvent()方法返回true,拦截的结果是设置变量intercepted为true,这样在后续的处理中,会将事件传递给其子View。同样,ViewGroup的onInterceptTouchEvent()方法也是一个拦截入口,默认情况下返回false表示不拦截。这种情况下,事件会按照正常分发流程继续下去。

说说说有个ViewGroup,里面有个View,如果View在dispatchTouchEvent中不分发事件,并且只在action_move中拦截touch事件向下分发,问ViewGroup到View的各个action如何处理?

关于这个问题,我们需要从以下几个方面分析:事件分发的路径和拦截点。首先,ViewGroup在处理TouchEvent事件时,会先通过dispatchTouchEvent()的方法,如果返回true,则表示事件被拦截并传个给子View;否则事件继续向VEIEW传递。在这个例子中,View的dispatchTouchEvent返回false,这样ViewGroup会进入拦截点处理,在onInterceptTouchEvent中判断是否拦截。在这里,如果不拦截,则通过将一个called属性设置为false,此时View的dispatchTouchEvent方法不会被调用,事件会以向上传递的形式继续传递,直到找到能够处理事件的View。

另外,关于dispatchTransformedTouchEvent的实现,其主要作用是将事件参数进行转换,包括位置的修正和变换,然后由最终的子View处理。其中,如果子View为空,直接调用默认的dispatchTouchEvent。这种情况下,如果子view为空,事件会被当作直接处理的事件,按默认规则传递。

当只想实现拖拽而不实现点击该怎么处理?

考虑到Android的触摸事件处理机制,仅实现拖拽可以通过设置直接将事件拦截,并将事件传递给期望处理的View而不触发点击动作。这可以通过让View的dispatchTouchEvent返回true,同时确保在onTouchEvent中不额外处理点击事件。

最后对于很多刚入行的Android开发人员来说,提升技能的过程往往显得漫长且低效。收集整理的这些架构技术和面试经验希望能为各位开发者提供参考,减少他们的学习弯路。本文的重点在于是否能帮助到大家,其余的内容不算特别重要。

同时,我整理了多年的学习资料和架构发展导图,专门为有经验的Android开发者准备。这些资料涵盖了从入门到架构师的全套学习内容。

图片和链接已被去除注意:本文是对原文重申内容,并未进行创意转化

不论遇到什么困难,都不应该成为我们放弃的理由!

转载地址:http://napoz.baihongyu.com/

你可能感兴趣的文章
NT symbols are incorrect, please fix symbols
查看>>
ntelliJ IDEA 报错:找不到包或者找不到符号
查看>>
NTFS文件权限管理实战
查看>>
ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
查看>>
ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
查看>>
ntp server 用法小结
查看>>
ntpdate 通过外网同步时间
查看>>
ntpdate同步配置文件调整详解
查看>>
NTPD使用/etc/ntp.conf配置时钟同步详解
查看>>
NTP及Chrony时间同步服务设置
查看>>
NTP服务器
查看>>
NTP配置
查看>>
NUC1077 Humble Numbers【数学计算+打表】
查看>>
NuGet Gallery 开源项目快速入门指南
查看>>
NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
查看>>
nuget.org 无法加载源 https://api.nuget.org/v3/index.json 的服务索引
查看>>
Nuget~管理自己的包包
查看>>
NuGet学习笔记001---了解使用NuGet给net快速获取引用
查看>>
nullnullHuge Pages
查看>>
NullPointerException Cannot invoke setSkipOutputConversion(boolean) because functionToInvoke is null
查看>>