ConstraintSet 中 clone() 的不同实现有什么区别?
What is the difference between the different implementations of clone() in ConstraintSet?
根据docs for ConstraintSet
,clone()
方法有3种实现方式:
void clone(ConstraintLayout constraintLayout)
void clone(ConstraintSet set)
void clone(Context context, int constraintLayoutId)
文档中对每个版本的解释有点模糊,所以我不太清楚这三个版本之间的区别是什么以及我应该在什么时候使用它们。我已经能够在需要时毫无问题地使用第一个。
ConstraintSet
包含此私有字段:
private HashMap<Integer, ConstraintSet.Constraint> mConstraints;
三个 clone()
方法中的每一个都将从此 Map
中删除所有现有条目,然后根据您传入的内容将其填回。本质上,这些方法中的每一个都会将调用它们的任何 ConstraintSet
个实例变成参数的副本。
void clone(ConstraintSet set)
此版本清除 mConstraints
映射并使用传入的 ConstraintSet
中的约束重新填充它。
void clone(ConstraintLayout constraintLayout)
此版本清除 mConstraints
映射并使用任何必要的约束重新填充它以生成传入的副本 ConstraintLayout
.
void clone(Context context, int constraintLayoutId)
此版本使用传入的Context
和layout id从布局资源中inflate出一个ConstraintLayout
实例,然后调用clone(ConstraintLayout)
(上述方法)
根据docs for ConstraintSet
,clone()
方法有3种实现方式:
void clone(ConstraintLayout constraintLayout)
void clone(ConstraintSet set)
void clone(Context context, int constraintLayoutId)
文档中对每个版本的解释有点模糊,所以我不太清楚这三个版本之间的区别是什么以及我应该在什么时候使用它们。我已经能够在需要时毫无问题地使用第一个。
ConstraintSet
包含此私有字段:
private HashMap<Integer, ConstraintSet.Constraint> mConstraints;
三个 clone()
方法中的每一个都将从此 Map
中删除所有现有条目,然后根据您传入的内容将其填回。本质上,这些方法中的每一个都会将调用它们的任何 ConstraintSet
个实例变成参数的副本。
void clone(ConstraintSet set)
此版本清除 mConstraints
映射并使用传入的 ConstraintSet
中的约束重新填充它。
void clone(ConstraintLayout constraintLayout)
此版本清除 mConstraints
映射并使用任何必要的约束重新填充它以生成传入的副本 ConstraintLayout
.
void clone(Context context, int constraintLayoutId)
此版本使用传入的Context
和layout id从布局资源中inflate出一个ConstraintLayout
实例,然后调用clone(ConstraintLayout)
(上述方法)