onLayout初始化裁剪信息

在EasyConstraintLayout中初始化LayoutParamsData的paths

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
for (int i = 0, size = getChildCount(); i < size; i++) {
View v = getChildAt(i);
ViewGroup.LayoutParams lp = v.getLayoutParams();
if(lp instanceof EasyLayoutParams){
EasyLayoutParams elp = (EasyLayoutParams) lp;
elp.getData().initPaths(v);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
在LayoutParamsData中将裁剪阴影的path和裁剪子view的保存起来,新增两个属性

public class LayoutParamsData {
Path widgetPath;
Path clipPath;
boolean needClip;
boolean hasShadow;
public LayoutParamsData(Context context, AttributeSet attrs) {

needClip = radius > 0;
hasShadow = shadowEvaluation > 0;
}
public void initPaths(View v) {
widgetPath = new Path();
clipPath = new Path();
clipPath.addRect(widgetRect, Path.Direction.CCW);
clipPath.addRoundRect(
widgetRect,
radius,
radius,
Path.Direction.CW
);
widgetPath.addRoundRect(
widgetRect,
radius,
radius,
Path.Direction.CW
);
}
}
--------------------- 

posted on 2019-08-01 19:16  激流勇进1  阅读(112)  评论(0编辑  收藏  举报