2011-09-28 4 views
5

Tôi đang tạo một ứng dụng Android mà tôi muốn hỗ trợ nhiều màn hình. Đối với những ứng dụng này, tôi đã sử dụng 9 hình ảnh vá.Cách sử dụng hình ảnh vá 9 trong android với mật độ khác 2 (như mdpi, ldpi, hdpi).?

Nhưng câu hỏi của tôi là việc sử dụng 9 hình ảnh vá có đủ cho các thiết bị có mật độ khác không hoặc tôi sẽ cần tạo các hình ảnh vá khác nhau cho 2 mật độ khác nhau (như mdpi, ldpi, hdpi).

Cảm ơn trước

+1

[Android Làm thế nào để sử dụng 9 vá png] (http://adilsoomro.blogspot.com/2012/11/android-how-to-use-9-patch-png.html) –

Trả lời

17

thời gian gần đây tôi phát hiện ra bản thân mình trong tình cảnh tương tự như vậy cho tôi pitch ở và mở rộng về những gì đã được nói đã ...

Vâng, hình ảnh 9-patch sẽ mở rộng quy mô , đó là những gì họ tồn tại. Nhưng nếu bạn nên sử dụng hình ảnh 9-bit cho tất cả mật độ màn hình, điều đó phụ thuộc vào hình ảnh thực sự. Hình ảnh 9-vá thường được sử dụng, ví dụ, các nút. Bạn có thể có các nút có kích thước khác nhau trong ứng dụng của mình và hình ảnh 9 bản vá sẽ giúp giải quyết chúng, bất kể bạn kích thước nút của bạn như thế nào (miễn là hình ảnh 9-bit được tạo đúng cách).

Nhưng giả sử thiết kế nút của bạn có một số góc thực sự tròn cho phiên bản hdpi. Bạn tạo ra hình ảnh 9-vá của bạn mà không gây rối các góc nhưng khi bạn nhìn vào nó trong phiên bản ldpi, bạn sẽ nhận ra các góc của bạn quá lớn cho độ phân giải thấp đó. Đối với tình huống này, bạn sẽ cần một hình ảnh 9-vá khác với các góc tròn ít hơn, trông tốt hơn ở độ phân giải đó.

Vì vậy, câu trả lời cuối cùng là, nó thực sự phụ thuộc vào hình ảnh của bạn. Nếu bạn có thể tạo ra một hình ảnh 9-bit có vẻ tốt trong tất cả mật độ, tốt hơn, sử dụng nó, vì bạn chỉ cần một hình ảnh để xử lý tất cả mật độ. Nhưng nếu nó không đẹp, bởi vì các góc, gradient hoặc bất cứ thứ gì, bạn sẽ cần một hình ảnh 9-bit cho mỗi mật độ màn hình.

Hy vọng nó rõ ràng hơn bây giờ.

+0

nếu hình ảnh là một png bình thường và không phải 9patch png, hình ảnh vẫn được chia tỷ lệ hay là 9patch một yêu cầu thực sự khó cho bất kỳ chức năng quy mô nào? – Vass

+1

@Vass Ảnh sẽ được chia tỷ lệ nếu chế độ xem của bạn có kích thước lớn hơn kích thước của hình ảnh. Nhưng hình ảnh bản vá 9 được sử dụng để lưu từ quá trình rip. – AB1209

+0

@ AB1209, bạn có thể cho tôi biết ý bạn là "tiết kiệm từ việc rip" không? – Vass

2

Từ tài liệu: nine patch

Một đồ họa NinePatchDrawable được một hình ảnh bitmap căng ra, mà Android sẽ tự động thay đổi kích thước để phù hợp với nội dung của Xem trong đó bạn đã đặt nó như là lý lịch. Một ví dụ sử dụng một NinePatch là nền được sử dụng bởi các nút Android tiêu chuẩn - các nút phải căng để chứa các chuỗi có độ dài khác nhau. Một hình vẽ có thể kéo dài của NinePatch là một hình ảnh PNG chuẩn bao gồm một đường viền rộng hơn 1 pixel. Nó phải được lưu với phần mở rộng .9.png, và được lưu vào thư mục res/drawable/của dự án của bạn.

câu trả lời là không. bạn chín vá sẽ có quy mô giữa kích thước màn hình khác nhau

+4

Đó không hoàn toàn chính xác. Có chínpatch sẽ mở rộng nhưng bạn vẫn nên cung cấp hình ảnh ldpi/mdpi/hdpi vì các phần không có tỷ lệ cũng phải có kích thước chính xác. –

+0

Nhưng còn mật độ khác nhau-2 thì sao? Tôi có cần phải tạo ra 9 hình ảnh trang mật độ cao và thấp không? – AB1209

+4

@ AB1209 Bạn KHÔNG PHẢI nhưng bạn có thể nếu bạn nhận thấy rằng các bộ phận NinePatch của bạn không mở rộng tốt. – rf43

0

Câu trả lời ngắn là CÓ. Kiểm tra này:

Theo mặc định, Android quy mô drawables bạn bitmap (.png, .jpg, và .gif files) và Nine-Patch drawables (.9.png file) để họ làm tại thích hợp kích thước vật lý trên mỗi thiết bị. Ví dụ, nếu ứng dụng của bạn cung cấp bitmap drawables chỉ cho đường cơ sở, mật độ màn hình trung bình (mdpi), thì hệ thống sẽ mở rộng khi trên màn hình có mật độ cao và giảm tỷ lệ khi trên màn hình có mật độ thấp. Tỷ lệ này có thể gây ra hiện vật trong các bitmap . Để đảm bảo các ảnh bitmap của bạn trông đẹp nhất, bạn nên bao gồm các phiên bản thay thế tại các độ phân giải khác nhau cho mật độ màn hình khác nhau.

from Android Developer Official Doc