重新认识View(三)

重新认识View(三)

  View事件分发:传递MotionEvent,还是和前端相似的机制,是否消费了事件,主要有是由三个过程完成,分发,拦截,调用。简单的理解为:点击后最先分发给Activity->PhoneWindow->DecorView。
  一个事件一般只被一个View拦截并消耗。ViewGroup默认不拦截任何事件,一个View默认会消耗事件并返回true,除非clickable和longClickable同时为fale,View的longClickable默认为false。Button默认clickable为true,TextView默认为false。onClick事件可以说是View最后调用的事件了,发生的前提是view可点击,同时收到了down和up事件。onTouchListener优先于onTouchEvent。setOnClickListener后,会将View的clickable设为true。
  DecorView继承了FrameLayout,是当前界面的底层容器,setContentView的View的父容器。值得一提的是MeasureSpec:一个32位int值,高2位代表Mode,低30位代表Size,Mode:UNSPECIFIED(不限制),EXACTLY(精确),AT_MOST(可用大小)。MeasureSpec由LayoutParams和父类一起决定。
  View工作流程:measure(测量),layout(布局),draw(绘制)。measure是final类型的,不可重写。有需要只能重写onMeasure()方法。
  先写这些,果然View好复杂-_-,平时使用的那些只是冰山一角。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值