2015-07-12 14 views
14

Ich versuche, benutzerdefinierte ViewGroup-Layout-Formen zu machen, dass das Layout sein Stern oder Herz, Dreiecke oder sogar die Linien diagonal.Android machen benutzerdefinierte Layout-Form

Also das Ziel ist es, Collage-View für zwei oder mehr ImageViews zu machen. triangle layouts

hearts layouts

Könnte mir jemand eine Bibliothek geben oder einen Weg, um diesen Trick zu tun?

+0

Es gibt keine einfache Möglichkeit, dies mit "ImageViews" zu tun, Ihre Option ist Canvas zu verwenden. – doubleA

+0

Ich möchte dies nicht auf ImageViews anwenden, ich möchte dies für ViewGroups tun. –

+0

@MarwanZakariya sind in der Lage, das ans zu bekommen sieht cool aus, wenn es implementiert ist – SAVVY

Antwort

9

Sie können dies erreichen, indem Sie die Standardmethoden Canvas und BitmapShader verwenden.

Erste Methode könnte wie folgt aussehen:

@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(); 
} 

Die zweite könnte wie folgt aussehen:

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); 
} 

So müssen Sie Ihre Formen definieren, laden Bitmaps und sie zeichnen.