1、LayoutInflater View渲染器,用于渲染各种布局并且把它加载到你的主布局中,
主要方法layoutInflater.inflate(resourceId, root);
内部逻辑是使用Android提供的pull解析方式来解析布局文件的。解析出来后通过反射方法来创建解析出来的控件。
2、两个属性,layout_height和layout_width 是用于设置控件在某一个布局中的宽和高,而不是设置控件本身的大小。换句话说如果控件没有 被添加到某个布局中他设置layout_height和layout_width是没有效果的。
3、View时间的传递,View的事件是一个一个传递,先传递down事件在传递move事件,最后传递up事件,换言之,只有在down事件被销毁 后move才会触发,move被销毁了才会触发up事件,传递方式之前在一个大神的博文中看到一个非常生动的比喻,拿来说下也做个笔记防止以后忘了,比喻是这样的
1、人物:省长,市长,镇长,村长,农民。
down事件 省长说要吃鱼 --安排市长做 --市长安排镇长做-----镇长安排村长做-----村长叫农民做 ---农民已经不能下传,就只能自己 做,农民做啊做啊做不出来了,反馈村长,村长说太没用了,那就自己做发现自己也不会做,反馈镇长,镇长说村长太没用了,那就自 己做,镇长做啊做啊做出来了(down事件已经被消耗了),反馈给市长,市长说不错哦,下次有事还找你,市长反馈给省长,省长说 不错啊下次有事还找你。
move事件,省长说要吃馒头--安排个市长----市长安排给镇长 ----镇长心里想上次让你做的事情你都做不好这次就不找村长了自己做,镇长做啊做啊做出来了(mov事件已经销毁),反馈给市长-市长反馈给省长。
up事件, 省长说要吃包子。。。。。大概流程就跟move事件一样的
这个比喻非常的生动有没有,用相对专业一点的语言就是,如果你的view没有响应down事件那么后面的move和up事件都不会传到你 这了。这也道出为什么在down事件中一定要返回true不然你后面的move和up事件都不会响应。
4、getRawX(),getRawY()和getX(),getY()的区别,getRawX(),getRawY()是相对于屏幕的原点的距离,而getX(),getY()是相对于控件左上方的点的距离。