2014-10-18 22 views
6

Tôi cần tạo bố cục biên lai trong Android. Ý tưởng rất đơn giản, một bố cục hình chữ nhật với cạnh dưới ngoằn ngoèo.Biên nhận Android/zigzag drawable/layout

Kết quả tốt nhất là bố cục/bố cục với kích thước hình chữ nhật cố định (nghĩa là kích thước hình tam giác cố định), sẽ nhân số lượng hình tam giác theo chiều rộng thực tế của hình dạng, theo thời gian thực. Với một clip có thể, để có hình tam giác cắt bớt nếu cần thiết.

Đây là một ví dụ điển hình (chỉnh sửa: Tôi đang đề cập đến dòng ngoằn ngoèo dưới):

enter image description here

Tôi thực sự không có ý tưởng vững chắc làm thế nào để tạo ra nó. Suy nghĩ của 9 miếng vá, nhưng nó có vẻ không phù hợp. Tư tưởng của danh sách lớp drawable với offsets ngang có thể ..

Có lẽ nó có thể tạo ra một bản vá 9 với các phần quy mô riêng biệt, để giữ tỷ lệ khía cạnh của zigzag ... Điều này cũng sẽ được OK.

EDIT - TRẢ LỜI Sử dụng nhận xét của @Luksprog, tôi dễ dàng tạo lại những gì tôi muốn.
Dưới đây là một số mã:

Image (lưu ý chiều cao tương ứng với kích thước hình ảnh nguồn):

<ImageView 
     android:id="@+id/zigzag_bottom" 
     android:layout_width="match_parent" 
     android:layout_height="12dp" 
     android:adjustViewBounds="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/zigzag" />  

drawable:

<?xml version="1.0" encoding="utf-8"?> 
    <bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
     android:src="@drawable/ic_zigzag" 
     android:tileMode="repeat" 
     android:antialias="true" 
    /> 
+0

Thx, nhưng bạn đang đề cập đến danh sách và tôi đang đề cập đến đường ngoằn ngoèo phía dưới ... btw cảm ơn bạn đã chỉnh sửa! Trên thực tế, có thể nó có thể đạt được với một ListView ngang! :) –

+0

Bạn không thể tạo một đường dẫn chín cho hình ảnh đó. Bạn có thể chỉ cần lấy một trong những răng zig zag và sử dụng nó trong một bitmap drawable với chế độ lặp lại thiết lập trên nó. – Luksprog

+0

@Luksprog hoàn hảo! Rất đơn giản: P Bạn có thể vui lòng trả lời để tôi có thể bình chọn câu trả lời của bạn không? Bạn có thể sử dụng mã của câu trả lời của tôi nếu bạn muốn, nó sẽ giúp người khác. –

Trả lời

2

Bạn không thể làm cho một con đường chín cho rằng hình ảnh bởi vì không có cách nào để xác định một khu vực có thể kéo dài ở phía dọc hoặc ngang. Để có được mẫu zig-zag đó, bạn có thể trích xuất một trong các răng zig-zag (cùng với bóng nền) và bọc nó trong một BitmapDrawable có thuộc tính tileMode để lặp lại ảnh được bao bọc bên trong các giới hạn có thể vẽ được. Bằng cách này, răng zig-zag sẽ được lặp lại và bạn sẽ soạn mẫu.

lưu ý chiều cao tương ứng với kích thước hình ảnh nguồn

Đây là một kịch bản hạnh phúc, nhưng bạn có thể làm cho nó hoạt động đối với trường hợp khi chiều cao không phù hợp. Ví dụ, bạn có thể quấn zig-zag BitmapDrawable trong một LayerDrawable (cùng với chế độ xem thực tế có thể kéo được (đối với phần còn lại của khu vực xem)) và sau đó sử dụng setLayerInset() để đặt bản vẽ ở dưới cùng. Bạn cũng có thể tạo drawable của riêng bạn để đặt hình mẫu zig-zag ở phía dưới bằng cách ghi đè phương thức onDraw().

+0

Ý tưởng là tốt, bạn có ví dụ nào cho việc này không. –

+2

Vui lòng xem câu hỏi ... Câu trả lời là (đã chỉnh sửa) ở đó :) –

+0

https://medium.com/android-dev-br/repetir-at%C3%A9-encaixar-390ade3f57bd –

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