Android 制作自定义布局形状

14
我想创建自定义的ViewGroup布局形状,如星形或心形、三角形甚至是将线条对角化。
因此,目标是为两个或多个ImageView创建拼贴视图。 三角形布局 心形布局 请问是否有库或方法可以做到这一点?

使用“ImageViews”没有简单的方法来实现这一点,您的选择是使用画布(Canvas)。 - doubleA
我不想将其应用于ImageViews,我想对ViewGroups执行此操作。 - Marwan Zakariya
@MarwanZakariya 你能得到答案吗?如果实现了,看起来很酷。 - SAVVY
1个回答

10

您可以使用CanvasBitmapShader的标准方法来实现此目的。

第一种方法可能如下所示:

@Override protected void onDraw(Canvas canvas) {
    //bitmap 01
    canvas.save(Canvas.CLIP_SAVE_FLAG);
    canvas.clipPath(shape01);
    canvas.drawBitmap(bitmap01, 0, 0, paint);
    canvas.restore();

    //bitmap 02
    canvas.save(Canvas.CLIP_SAVE_FLAG);
    canvas.clipPath(shape02);
    canvas.drawBitmap(bitmap02, 0, 0, paint);
    canvas.restore();
}

第二个可能看起来像这样:

BitmapShader shader01 = new BitmapShader(bitmap01, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
BitmapShader shader02 = new BitmapShader(bitmap02, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
Paint paint01 = new Paint();
Paint paint02 = new Paint();
paint01.setShader(shader01);
paint02.setShader(shader02);

@Override protected void onDraw(Canvas canvas) {
    //bitmap 01
    canvas.drawPath(path01, paint01);

    //bitmap 02
    canvas.drawPath(path02, paint02);
}

所以你需要定义形状,加载位图并将它们绘制出来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接