Chcę utworzyć kształt sześciokąta dla mojego projektu, więc chcę utworzyć ten kształt w formacie .xml, więc jak mogę utworzyć.Jak utworzyć kształt sześciokąta w formacie .xml
Odpowiedz
Najlepszym rozwiązaniem dla Ciebie byłoby użyć VectorDrawable:
sześciokątny kształt jako wektor rozciągliwej:
<vector android:height="24dp" android:viewportHeight="628.0"
android:viewportWidth="726.0" android:width="27dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#00ffffff"
android:pathData="m723,314c-60,103.9 -120,207.8 -180,311.8 -120,0 -240,0 -360,0C123,521.8 63,417.9 3,314 63,210.1 123,106.2 183,2.2c120,0 240,0 360,0C603,106.2 663,210.1 723,314Z"
android:strokeColor="#000000" android:strokeWidth="4"/>
</vector>
Update (28: 07.2016):
do wsparcia API poniżej Lollipop biblioteki wsparcia wykorzystanie http://android-developers.blogspot.com/2016/02/android-support-library-232.html pamiętaj, aby użyć VectorDrawableCompat zamiast VectorDrawable
Można użyć VectorDrawable (VectorDrawableCompat do starej wersji) https://developer.android.com/studio/write/vector-asset-studio.html. Możesz łatwo importować kształt z plików .svg.
Podczas gdy większość rozwiązań wiązałoby w tym ShapeImageView (co jest wielką bibliotekę, btw), zawsze można napisać swoją własną logikę, aby utworzyć niestandardowy układ w kształcie sześciokąta.
Wszystko, co musisz zrobić, to zdefiniować właściwości obiektu Path
, a następnie użyć go w metodzie onDraw() układu, używając Canvas.
W ten sposób utworzysz ścieżkę sześciokątną.
float midx = getWidth()/2;
float midy = getHeight()/2;
Path p = new Path();
p.moveTo(midx, midy);
p.lineTo(midx+150, midy + 220);
p.lineTo(midx, midy + 220);
p.lineTo(midx-150, midy + 220);
p.lineTo(midx-300, midy);
p.lineTo(midx-150, midy-220);
p.lineTo(midx+150, midy-220);
p.lineTo(midx+300, midy);
p.lineTo(midx+150, midy + 220);
return p;
Teraz, w niestandardowym układzie sześciokątnym, użyj tej ścieżki w onDraw().
@Override
protected void onDraw(Canvas canvas) {
Path clipPath = new Path();
clipPath.addPath(p); //p is the path you created above
canvas.clipPath(clipPath);
canvas.drawColor(Color.RED); //optional
super.onDraw(canvas)
}
Gdy masz swój układ niestandardowy gotowy, można ustawić tło układ do dowolnej rozciągliwej chcesz (tak jak byś zrobił dla innych układów).
Chcesz użyć na tle 'Widok obrazu'? lub w jakimkolwiek innym celu. –
tak, chcę użyć w tle ImageView. więc chcę tego kształtu w formacie .xml – suraj
http://stackoverflow.com/a/22987264/1992254 – Tejas