Sử dụng Shape Drawables Android

Tram Ho

Tại sao nên sử dụng ShapeDrawable

Khi chúng ta sử dụng ảnh PNG hay JPEG trong ứng dụng, ta sẽ cần phải có nhiều bản sao của chúng tuỳ thuộc vào độ phân giải màn hình. Chính vì điều đó, nó sẽ làm tăng kích thước của ứng dụng lên. Tất nhiên với các trường hợp đặc biệt chúng ta phải cần sử dụng đến ảnh, nhưng với một số trường hợp, chúng ta nên sử dụng ShapeDrawable để thay thế, nó sẽ làm giảm khá là nhiều kích thước của ứng dụng đấy.

Ví dụ như với các button trong hình dưới, chúng ta có thể sử dụng ảnh để set nó làm background đó, tuy nhiên chúng ta nên sử dụng ShapeDrawable.

ShapeDrawable là gì?

ShapeDrawable là tổng hợp các lệnh giúp vẽ ra các hình dạng gì đó với kích thước, màu sắc tuỳ chỉnh mà không làm thay đổi chất lượng hình.

Tạo một ShapeDrawable trong XML

Đầu tiên chúng ta sẽ tạo một drawable resource file.

Chuột phải vào res/drawable > New > Drawable resource file > Nhập file name > sử dụng shape làm root element > Click Ok

Một file mẫu sẽ có format như thế này:

Kết quả:

Các attribute khi tạo một shape

1. Shape type

Định nghĩa loại shape sẽ được vẽ. Nếu ta không định nghĩa shape type thì mặc định nó sẽ là rectangle, ngoài ra nó còn cung cấp các loại shape khác như: oval, line và ring.

2. Rounded Coneres

Định nghĩa phần bo góc của hình chữ nhật, khi ta sử dụng shape type là rectangle.

Chúng ta cũng có thể bo theo từng góc của rectangle với các attribute: android:topLeftRadius, android:topRightRadius, android:bottomLeftRadius, android:bottomRightRadius

3. Gradient or Solid color

Định nghĩa màu background của shape, có thể là gradient hoặc solid
Nếu muốn sử dụng màu solid thì chúng ta thêm thẻ solid và thêm attribute color để định nghĩa

Nếu muốn sử dụng màu gradient, chúng ta sẽ thêm gradient tag và định nghĩa màu start, center, end

Nếu không định nghĩa type của gradient thì nó sẽ để mặc định type là linear, ngoài ra còn có các type khác như radial, sweep

Nếu muốn thay đổi góc độ, hướng gradient thì chúng ta sẽ thay đổi angel attibute. Ví dụ mình cho gradient từ góc dưới trái đến góc trên phải thì chúng ta sẽ để angel với value là 45

4. Size

Định nghĩa kích thước của shape để sử dụng phù hợp với các trường hợp riêng

5. Stroke

Định nghĩa viền của shape với width và color, để định nghĩa khoảng cách của dash và độ rộng của dash thì ta dùng dashGap và dashWidth

Sử dụng shape trong View

Sau khi ta đã tạo file drawable thì ta sử dụng nó trong view như sau

Thay vì dùng android:background, ta có thể dùng:

Sử dụng trên Java:

Chỉnh sửa shape bằng Java

Chúng ta cũng có thể chỉnh sửa shape drawable với java

Kết luận

Cảm ơn các bạn đã đọc bài viết, hi vọng bài viết sẽ giúp ích cho bạn.

Tham khảo: https://android.jlelse.eu/android-shape-drawables-tutorial-17fbece6fef5

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo