use*_*730 4 android android-layout diagonal
如何使用内容对角切割布局(LinearLayout或RelativeLayout)?
该模型看起来像这样:
我尝试使用对角线布局库,如https://github.com/florent37/DiagonalLayout,但我似乎无法在图像的右侧和第二个布局的左侧使用库或自定义视图进行此剪切.
任何帮助,将不胜感激.
您可以自己绘制每个ViewGroup的背景.
此解决方案中有一些关键点:
你需要扩展所需的ViewGroup:
public class DiagonalLayout extends LinearLayout
Run Code Online (Sandbox Code Playgroud)覆盖功能:
填写上面的方法.以下是示例代码:
@Override
protected void dispatchDraw(Canvas canvas) {
int height = canvas.getHeight();
int width = canvas.getWidth();
Path path = new Path();
path.moveTo(0, 0);
path.lineTo(width / 3 + width / 10, 0);
path.lineTo(width / 3 - width / 10, height);
path.lineTo(0, height);
path.close();
canvas.save();
canvas.clipPath(path, Region.Op.INTERSECT);
canvas.drawColor(ContextCompat.getColor(getContext(), android.R.color.holo_red_dark));
canvas.restore();
path = new Path();
path.moveTo(width / 3 + width / 10 + width / 10, 0);
path.lineTo(width, 0);
path.lineTo(width, height);
path.lineTo(width / 3, height);
path.close();
canvas.save();
canvas.clipPath(path, Region.Op.INTERSECT);
Paint paint = new Paint();
paint.setStrokeWidth(8);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(ContextCompat.getColor(getContext(), android.R.color.black));
canvas.drawPath(path, paint);
canvas.restore();
super.dispatchDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)上面代码的效果是:
上面的代码是:
Canvas状态,剪切Canvas到多边形并用颜色填充它Canvas到原始大小,绘制第二个多边形要绘制位图,请使用drawBitmap (Bitmap bitmap, Matrix matrix, Paint paint)方法而不是用红色填充它.
| 归档时间: |
|
| 查看次数: |
1895 次 |
| 最近记录: |