2012-06-12 39 views
10

Đồng nghiệp của tôi và tôi đã phát triển hai ứng dụng song song, mỗi ứng dụng có kiểu dáng tương tự nhau. Nền xem chính của các ứng dụng này là một gradient xuyên tâm. Ông đã thực hiện hình ảnh của mình như một hình ảnh chín vá và tôi đã làm nó với một hình dạng có thể vẽ được. Cả hai tạo ra kết quả tương tự và có thể chấp nhận được.Bản vá có thể vẽ được với hình dạng có thể vẽ được. Điều gì nên được ưa thích?

Câu hỏi của tôi là, chúng ta nên sử dụng câu hỏi nào? Có sự cân bằng giữa mức tiêu thụ bộ nhớ và hiệu suất không? Tôi hình dung rằng hình ảnh có thể mất thời gian để tải, nhưng hình dạng đó có thể vẽ được nhiều thời gian hơn để vẽ (do tính toán). Những cái này sau đó được lưu trữ trong bộ nhớ cache và những hình phạt chỉ xảy ra lần đầu tiên chúng được hiển thị hoặc là những vấn đề này đang diễn ra ???

Shape drawable:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <gradient 
     android:startColor="#003472" 
     android:endColor="#000034" 
     android:gradientRadius="350" 
     android:type="radial"/> 
</shape> 

Chín Patch:

enter image description here

Trả lời

3

Shape drawable là rất tốt cho loại gradient của hình ảnh với những thay đổi đơn giản màu liên tục. Mặt khác, hình ảnh 9-vá rất tuyệt vời cho hình ảnh với nhiều chi tiết, màu không đổi trong các khu vực có độ phân giải.

+0

Đó là tiêu chí tốt cho chất lượng của kết quả. Tuy nhiên, những gì về hiệu suất và tiêu thụ bộ nhớ trong trường hợp của chúng tôi. Ví dụ, hình ảnh khoảng 30K. Nếu chúng ta sử dụng nó làm nền cho một số Activies, nó sẽ tiêu thụ nhiều bộ nhớ hơn hình dạng có thể vẽ được không? – jsmith

+0

@jsmith Hiệu suất: 10-20 ms không nên là một vấn đề, vì vậy tôi sẽ nói không có sự khác biệt. Tiêu thụ bộ nhớ: vì cả hai đều được tái tạo trong thời gian chạy, bộ nhớ tiêu thụ của chúng cũng giống nhau. (Xem xét cả hai sẽ là bitmap dữ liệu với kích thước nhất định ở cuối) –

1

Chỉ gặp sự cố này trước đó.

KHÔNG SỬ DỤNG SHAPE TRONG XML NẾU BẠN CÓ ANIMATION THAM GIA IT. Lý do là bộ nhớ đệm (đặc biệt là nếu bạn đang sử dụng tăng tốc phần cứng trên) sẽ làm cho nó thực sự có vẻ "laggy" vì màn hình sẽ không làm mới thường xuyên.

+2

Bạn có thể giải thích thêm một chút những gì có nghĩa là "... liên quan đến nó"? Ý bạn là, khi hình dạng XML đang di chuyển? Hay cái gì khác? –

0

Hãy xem câu trả lời được đưa ra bởi @Ivan Bartsov. Nhưng thông qua phân tích mã cẩn thận, ông kết luận rằng đối với hầu hết các trường hợp chung, sử dụng một bản vá 9 yêu cầu ít quá trình sử dụng bộ nhớ ít hơn so với gradient được tạo ra. Vì vậy, đối với hầu hết các trường hợp, tốt nhất là sử dụng 9 bản vá lỗi.

Hãy xem câu trả lời của anh ấy để biết chi tiết về chế độ: What should i use for better performance, nine-patch or drawable xml resource?

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