View

Q:MotionEvent是什么?包含几种事件?什么条件下会产生?
ACTION_UP:手指按下
ACTION_MOVE:手指移动
ACTION_UP:手指抬起
ACTION_CANCEL:手指重当前view移动到外层view时

Q:scrollTo()和scrollBy()的区别?
scrollTo()为视图 绝对距离 的移动,scrollBy()为视图 相对距离 的移动,内部包含了scrollTo(scollX+dx,scollY+dy),dx和dy就是scrollBy()的相对距离传值。

Q:Scroller中最重要的两个方法是什么?主要目的是?
startScroll()和computeScroll(),首先Scroller系统封装类为了解决scrollTo()和scrollBy()滑动不顺畅的。
Scroller内含插值器,让我们控件可以平滑的滑动、先加速后减速、先减速后加速滑动等,执行流程:
1、初始化Scroller
2、调用startScroll()开始滚动,此时并真的开始,只是录入时间,距离,Interpolator等
3、执行invalidate()刷新界面
4、重写View的computeScroll()并在其内部实现与滚动相关的业务逻辑,这里才开始真正的滚动逻辑,这里可以条用scrollTo()进行滚动,在第二步已经给出了相关参数,我们可以计算出当前步需要滚动的距离以及时间
5、再次执行invalidate()刷新界面

Q:谈一谈View的事件分发机制?
这个分发机制最好理解是一张U形图:

事件分发.png

Q:如何解决View的滑动冲突?
解决冲突可以从两方面着手:
外部view拦截:如果外部viewGroup需要滑动则调用onInterceptTouchEvent并在内部做相应的拦截,放回true让viewGroup的onTouchEvent()消费事件
内部view拦截:父容器不拦截任何事件,传递给子view如果需要就进行拦截,这种就需要我们在子view通知父容器不要拦截当前我需要的事件,通知方式为requestDisallowInterceptTouchEvent()

Q:谈一谈View的工作原理?
view的工作工程包含onMesure() 测量宽高、onLayout()布局、onDraw绘图三个主要过程;而整个绘制过程其实是一颗viewTree的绘制,即由根视图向子视图进行绘制:activity----PhoneWindow------DecoreView-----view;

view层级绘制.png

最后我们整个绘制过程全写在了performTraversals()方法中,如下:
view绘制.png

Q:MeasureSpec是什么?有什么作用?
MeasureSpec是一种可以提供父容器布局向子view宽高转换的静态工具类,里面大多是位运算,提供三种控制模式:
UNSPECIFIED:无限制模式,
EXACTLY:父向子指定精确的尺寸,
AT_MOST:父向子提供一个最大尺寸;
onMesure()中通过宽测量值widthMeasureSpec和高测量值heightMeasureSpec决定View的大小

Q:自定义View/ViewGroup需要注意什么?
1、测量好宽高onMesure()
2、内部避免调用handler,使用view.post
3、线程和动画需要及时关闭
4、处理好嵌套

Q:onTouch()、onTouchEvent()和onClick()关系?
执行先后顺序:onTouch()>onTouchEvent()>onClick()

Q:SurfaceView和View的区别?
view 在主线程进行刷新,适合一般的界面;SurfaceView可以在子线程进行频繁刷新,适合数据量大的界面,比如视频、相机、游戏

Q:invalidate()和postInvalidate()的区别?
主线程刷新:invalidate()
子线程刷新:postInvalidate()

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 一、View事件体系 1.什么是 View 和 View的位置坐标 View是什么: View 是一种界面层的控件...
    sssssss_阅读 1,248评论 0 7
  • 4.1 View的事件体系 一、View的基础知识 1、View的位置参数 1.1、两种坐标系 Android坐标...
    AndroidMaster阅读 657评论 0 4
  • 什么是View View 是 Android 中所有控件的基类。 View的位置参数 View 的位置由它的四个顶...
    acc8226阅读 1,086评论 0 7
  • 2017,11,21 兰州晨报消息,兰州铁路局11月19日,随全国各个铁路局一起,统一更名为中国铁路兰州局集团有限...
    jinlunzhai阅读 268评论 0 0
  • 对于大学之前的回忆,其中一大部分就是暑假了,在一个凉爽的清晨,被奶奶唤醒,“我去地里面摘些菜,你去不去”。听...
    阿南怪怪阅读 206评论 0 0