通過
ConstraintSet
動態(tài)修改約束魁莉,實現(xiàn)動畫效果。
創(chuàng)建
val constraintSet = ConstraintSet()
復制
//1
constraintSet.clone(context: Context, constraintLayoutId: Int)
//2
constraintSet.clone(set: ConstraintSet)
//3
constraintSet.clone(constraintLayout: ConstraintLayout)
//4
constraintSet.clone(constraints: Constraints)
注意:
ConstraintLayout
的子View
需要設(shè)置id
寄症。
All children of ConstraintLayout must have ids to use ConstraintSet.
修改
屬性
//相對自身 支持 ConstraintSet.WRAP_CONTENT古徒、MATCH_CONSTRAINT
constrainWidth(int viewId, int width)
constrainHeight(int viewId, int height)
//相對父布局
constrainPercentWidth(int viewId, float percent)
constrainPercentHeight(int viewId, float percent)
constrainDefaultWidth/constrainDefaultHeight
constrainMaxWidth/constrainMaxHeight
constrainMinWidth/constrainMinHeight
setVisibility - 設(shè)置顯隱
setAlpha - 設(shè)置透明度
setRotation/setRotationX/setRotationY - 設(shè)置旋轉(zhuǎn)角度
setScaleX/setScaleY - 設(shè)置縮放比例
setTransformPivot/setTransformPivotX/setTransformPivotY - 設(shè)置變換中心點
setTranslation/setTranslationX/setTranslationY/setTranslationZ - 設(shè)置偏移量
setElevation - 設(shè)置陰影
約束
connect
center
centerHorizontally
centerVertically
constrainCircle - 設(shè)置圓周約束
createHorizontalChain/createHorizontalChainRtl/createVerticalChain - 設(shè)置水平/垂直鏈
addToHorizontalChain/addToHorizontalChainRtl/addToVerticalChain - 加入水平/垂直鏈
removeFromHorizontalChain/removeFromHorizontalChainRtl/removeFromoVerticalChain - 從水平/垂直鏈移除
setHorizontalChainStyle/setVerticalChainStyle - 設(shè)置水平/垂直鏈的類型
setHorizontalBias/setVerticalBias - 設(shè)置水平/垂直偏移
setHorizontalWeight/setVerticalWeight - 設(shè)置水平/垂直權(quán)重
setMargin/setGoneMargin - 設(shè)置間隔和約束對象消失后的間隔
setGuidelineBegin/setGuidelineEnd/setGuidelinePercent - 設(shè)置參考線的相對位置
setDimensionRatio - 設(shè)置寬高比
clear - 清理約束
//id
ConstraintSet.PARENT_ID
//side
ConstraintSet.TOP
ConstraintSet.BOTTOM
ConstraintSet.LEFT
ConstraintSet.RIGHT
ConstraintSet.START
ConstraintSet.END
ConstraintSet.BASELINE
應用
TransitionManager.beginDelayedTransition(constraintLayout: ConstraintLayout)
constraintSet.applyTo(constraintLayout: ConstraintLayout)