2017-09-03 80 views
0

按照docs for ConstraintSet,還有clone()方法的三個實施方案中:ConstraintSet中clone()的不同實現之間有什麼區別?

  • void clone(ConstraintLayout constraintLayout)
  • void clone(ConstraintSet set)
  • void clone(Context context, int constraintLayoutId)

在文檔每個版本的解釋是有點模糊,所以我不完全清楚三者之間的差異以及我應該使用每一個的差異。只要需要,我就可以使用第一個,沒有任何問題或任何東西。

回答

0

ConstraintSet包括這個私人領域:

private HashMap<Integer, ConstraintSet.Constraint> mConstraints; 

每三個clone()方法將從此Map刪除所有現有條目,然後補回來了根據在已經通過什麼本質上,每個這些方法將把你調用它們的實例變爲參數的副本。

void clone(ConstraintSet set)

這個版本清除mConstraints地圖,並與內部約束重新填充它傳入的ConstraintSet

void clone(ConstraintLayout constraintLayout)

這個版本清除mConstraints地圖和重新填充它與任何的限制是必要的,產生的副本傳入的ConstraintLayout

void clone(Context context, int constraintLayoutId)

這個版本使用傳入Context和佈局ID從佈局資源充氣一個ConstraintLayout實例,然後調用clone(ConstraintLayout)(上述方法)。

相關問題