Android View(20190311 Study)

1.getLeft getRight getBottom getTop (getX getY 移動後要變) (getTranslationX  getTranlationY移動要變)方法和屬性 都是相對於父佈局的。佈局

2.Android touch事件傳遞必須經過super方法傳遞spa

1.action_down:Activity : super.dispatchTouchEvent()->
              e:ViewGroup:super.dispatchTouchEvent()->
              a:ViewGroup:onInterceptTouchEvent()->
              a.1.return true->b:ViewGroup:onTouchEvent()->b.1.return false->Activity:onTouchEvent->over
                                                           b.2.return true->over
              a.2.return false->c:View:super.dispatchTouchEvent()->d:View:onTouchEvent()->
              d.1.return false->c.1.return false->f:ViewGroup:onTouchEvent()->
                                                  f.1.return false->e.1.return false ->Activity:onTouchEvent->over
                                                  f.2.return true->e.2.return true->over
              d.2.return true -> c.2.return true -> e.2.return true ->over
2.幾點返回值的重要說明;
 2.1.Activity :onTouchEvent方法調不調用取決於ViewGroup的dispatchTouchEvent的返回值,true,不執行,false,要執行
 2.2.ViewGroup:dispatchTouchEvent返回值是ViewGroup:onTouchEvent(若是返回true及其返回true,返回false及其返回false)影響和受子
     View:dispatchTouchEvent(受View:onTouchEvent影響,若是返回true及其返回true,返回false及其返回false)
     的返回值影響(前提是View:dispatchTouchEvent返回true及ViewGroup:onTouchEvent沒有調用),返回true及其返回true,返回false及其返回false。
     若是ViewGroup的onInterceptTouchEvent返回true,touch事件是不會被傳遞下去的。
 2.3.action_up等後續touch動做的傳遞,受action_down在哪被消耗(dispatchTouchEvent返回true)才能傳遞到哪,並且必須一層一層被消耗,才能一層一層傳遞下去
 2.4.Activity ViewGroup View的相應的super.dispatchTouchEvent super.onInterceptTouchEvent super.onTouchEvent都返回false,其中View.onTouchEvent如
     果view爲clickable(設置click監聽器等會讓其成爲clickable)會返回true。

3.View三個過程 onMeasure onLayout onDrawblog

   3.1 由於子view的measurespec是由viewgroup的getChildMeasureSpec()決定的,當子view參數是wrap_content或者是事件

         match_parent,他的specmode是at_most,他的寬高(View.getDefaultSize() )是在父佈局裏能夠獲得的最大寬高。get

相關文章
相關標籤/搜索