我正在制作一个拼贴制作应用,该主板有4个布局RelativeLayout
,布局中包含ImageView
个,而且imageViews适用于拖动,移动和缩放。
所有布局都可以是自定义形状,如三角形或对角线,如图片中所示。
我尝试使用自定义RelativeLayout
并为dispatchDraw
添加了覆盖,使用clipPath
制作自定义形状。
@Override
protected void dispatchDraw(Canvas canvas) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2
&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
setLayerType(LAYER_TYPE_SOFTWARE, null);
}
Path clipPath = new Path();
clipPath.addPath(triangle());
canvas.clipPath(clipPath);
canvas.drawColor(Color.TRANSPARENT);
super.dispatchDraw(canvas);
}
public Path triangle(Point p1, Point p2, Point p3)
{
Path p = new Path();
float midX = getWidth() / 2;
float midY = getHeight() / 2;
p.moveTo(midX, midY);
p.lineTo(p1.x, p1.y);
p.lineTo(p2.x, p2.y);
p.lineTo(p3.x, p3.y);
p.lineTo(p1.x, p1.y);
retrun p;
}
clipPath
以某种方式完成了诀窍的一部分,但它绘制了路径并使外部部分透明但没有剪切它们,因此布局仍然是矩形而不是三角形。
我想要一些使布局完全符合路径形状的东西。
任何解决方案?