android制作自定义布局形状

时间:2015-07-12 23:31:26

标签: android layout shape viewgroup

我正在尝试制作自定义ViewGroup布局形状,布局为星形或心形,三角形甚至使线条对角线。

因此,目标是为两个或更多ImageView制作拼贴视图。 triangle layouts

hearts layouts

有人可以给我一个图书馆或方法来做这个伎俩吗?

1 个答案:

答案 0 :(得分:9)

您可以使用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);
}

因此,您需要定义形状,加载位图并绘制它们。