ViewGroup measure layout

转载地址:http://blog.csdn.net/starfeng11/article/details/7028066


ViewGroup的绘图流程:ViewGroup绘制包括两个步骤:1.measure 2.layout

  在两个步骤中分别调用回调函数:1.onMeasure()   2.onLayout()

  1.onMeasure() 在这个函数中,ViewGroup会接受childView的请求的大小,然后通过childView的 measure(newWidthMeasureSpec, heightMeasureSpec)函数存储到childView中,以便childView的getMeasuredWidth() andgetMeasuredHeight() 的值可以被后续工作得到。

  2.onLayout() 在这个函数中,ViewGroup会拿到childView的getMeasuredWidth() andgetMeasuredHeight(),用来布局所有的childView。

  3.View.MeasureSpec 与 LayoutParams 这两个类,是ViewGroup与childView协商大小用的。其中,View.MeasureSpec是ViewGroup用来部署 childView用的, LayoutParams是childView告诉ViewGroup 我需要多大的地方。

  4.在View 的onMeasure的最后要调用setMeasuredDimension()这个方法存储View的大小,这个方法决定了当前View的大小。


        具体详见Android官方文档 dev guide->User Interface->How Android Draws Views

二 View,ViewGroup的手势监听顺序与使用

     View的手势监听相关回调函数:onTouchEvent()

     ViewGroup的手势监听相关回调函数:onTouchEvent(),onInterceptTouchEvent()

     1.这两个回调函数都会返回一个boolean变量,表示是否消费了此手势。如果消费了,返回true,如果未消费,返回false。

     2.当用户触摸一下屏幕,产生手势MotionEvent,

ViewGroup的onInterceptTouchEvent()会接受此MotionEvent。如果此回调函数返回true,则表示此ViewGroup消费了此手势,不想再让他的childView去处理,childView的 onTouchEvent()便不会再接受此手势,同时此ViewGroup的onTouchEvent()会接受此手势。 如果此回调函数返回false,则表示此ViewGroup未消费了此手势,想让他的childView去处理,childView的  onTouchEvent()接受此手势,同时此ViewGroup的onTouchEvent()不会接受此手势。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值