2015-07-12 37 views
14

Próbuję zrobić niestandardowe kształty układu ViewGroup, że układ to gwiazda lub serce, trójkąty, a nawet linie przekątnej.Android zrobić niestandardowy kształt kształtu

Zatem celem jest stworzenie widoku kolażu dla dwóch lub więcej ImageViews. triangle layouts

hearts layouts

Może ktoś mi dać bibliotekę lub sposób zrobić ten trick?

+0

Nie jest to łatwy sposób na zrobienie tego przy pomocy "ImageViews", którą możesz użyć Canvas. – doubleA

+0

Nie chcę stosować tego w ImageViews, chcę to zrobić dla ViewGroups. –

+0

@MarwanZakariya są w stanie uzyskać ans to wygląda cool, jeśli jest zaimplementowany – SAVVY

Odpowiedz

9

Można to osiągnąć za pomocą standardowych metod: Canvas i BitmapShader.

Pierwsza metoda mogłaby wyglądać następująco:

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

Drugi mógłby wyglądać następująco:

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

Więc trzeba określić swoje kształty, bitmap obciążenia i wyciągnąć je.