2016-05-18 63 views
5

Tôi muốn tạo hình lục giác cho dự án của mình vì vậy tôi muốn tạo hình dạng đó ở định dạng .xml để tôi có thể tạo ra như thế nào.Cách tạo hình lục giác theo định dạng .xml

like this image

like this image

+0

Bạn muốn sử dụng trong nền 'Xem hình ảnh '? hoặc bất kỳ mục đích nào khác. –

+0

có, tôi muốn sử dụng trong nền ImageView. vì vậy tôi muốn hình dạng này ở định dạng .xml – suraj

+0

http://stackoverflow.com/a/22987264/1992254 – Tejas

Trả lời

9

Giải pháp tốt nhất cho bạn sẽ được sử dụng VectorDrawable:

lục giác hình như vector drawable:

<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> 

Cập nhật (28: 07.2016):

Để hỗ trợ API bên dưới thư viện hỗ trợ sử dụng Lollipop http://android-developers.blogspot.com/2016/02/android-support-library-232.html hãy nhớ sử dụng VectorDrawableCompat thay vì VectorDrawable

+0

nó hiển thị kết thúc không mong muốn của tập tin sau /> – suraj

+0

Đã xảy ra sự cố với định dạng lưu lượng truy cập stackover và thẻ bị cắt. Tôi sửa nó rồi. – koliczyna

+0

có hoạt động. bạn có thể chia sẻ công cụ nào bạn sử dụng không. để thực hiện định dạng này – suraj

1

Mặc dù hầu hết các giải pháp bao gồm cả ShapeImageView (thư viện lớn, btw), bạn luôn có thể viết logic của riêng mình để tạo bố cục hình lục giác tùy chỉnh.

Tất cả những gì bạn cần làm là xác định các thuộc tính của đối tượng Path và sau đó sử dụng đối tượng đó trong phương thức onDraw() của bố cục bằng Canvas.

Đây là cách bạn sẽ tạo đường dẫn hình lục giác.

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; 

Bây giờ, trong bố cục hình lục giác tùy chỉnh của bạn, hãy sử dụng đường dẫn này trong 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) 
} 

Khi bố cục tùy chỉnh sẵn sàng, bạn có thể đặt nền của bố cục thành bất kỳ hình vẽ nào bạn muốn (giống như cách bạn làm cho bất kỳ bố cục nào khác).

Các vấn đề liên quan