美文网首页
View相关知识

View相关知识

作者: 梦里花落知多少_9ce8 | 来源:发表于2019-12-16 00:13 被阅读0次

    获取View的宽高

    (1)Activity/View onWindowFocusChanged

    (2)view.post(runnable)

    (3)ViewTreeObserver  OnGlobalLayoutListener

       View.getViewTreeObserver().addOnGlobalLayoutListener

    (4)view.measure(int widthMeasureSpec,int heightMeasureSpec)

    layout确定View本身的位置,OnLayout方法会确定所有子元素的位置

    draw 过程

    作用是将View绘制到屏幕上

    (1)绘制背景backGround.draw(canvas)

     (2)绘制自己(onDraw)

    (3)绘制children(dispatchDraw)

    (4)绘制装饰(onDrawScrollBars)

    滑动冲突的解决方式

    1.外部拦截法

    指点击事件都先经过父容器的拦截处理,如果父容器需要此事件就拦截,如果不需要此事件就不拦截,这样就可以解决滑动冲突的问题,这种方法比较符合点击事件的分发机制。

    重写父容器的onIntercptTouchEvent方法,返回true拦截

    2.内部拦截法

    指父容器不拦截任何事件,所有的事件都传递给子元素,如果子元素需要此事件就直接 消耗掉,否则就交由父容器处理。

    重写子元素的dispatchTouchevent()

    parent.requestDisallowInterceptTouchEvent(true) 子view拦截事件并处理

    相关文章

      网友评论

          本文标题:View相关知识

          本文链接:https://www.haomeiwen.com/subject/lsqrnctx.html