博客
关于我
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/

你可能感兴趣的文章
nginx代理地图服务--离线部署地图服务(地图数据篇.4)
查看>>
Nginx代理外网映射
查看>>
Nginx代理模式下 log-format 获取客户端真实IP
查看>>
Nginx代理解决跨域问题(导致图片只能预览不能下载)
查看>>
Nginx代理配置详解
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
Nginx代理静态资源(gis瓦片图片)实现非固定ip的url适配网络环境映射ip下的资源请求解决方案
查看>>
nginx反向代理
查看>>
nginx反向代理、文件批量改名及统计ip访问量等精髓总结
查看>>
Nginx反向代理与正向代理配置
查看>>
Nginx反向代理及负载均衡实现过程部署
查看>>
Nginx反向代理是什么意思?如何配置Nginx反向代理?
查看>>
nginx反向代理解决跨域问题,使本地调试更方便
查看>>
Nginx反向代理配置
查看>>
Nginx启动SSL功能,并进行功能优化,你看这个就足够了
查看>>
nginx启动脚本
查看>>
Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
查看>>
Nginx在Windows下载安装启动与配置前后端请求代理
查看>>
Nginx多域名,多证书,多服务配置,实用版
查看>>
nginx如何实现图片防盗链
查看>>