2010-07-26 6 views
15

Trong ứng dụng của tôi, tôi có độ dốc như drawable mà tôi đang sử dụng làm nền và tôi không thể làm cho nó trông mượt mà nhất có thể. Sau khi googling và cố gắng một mình tôi đã đưa ra sau đây. Trên nexus một nếu bạn gọi chỉ setDither (true) gradient của bạn vẫn còn dải, do đó bạn phải thiết lập PixelFormat như thế này Window.setFormat (PixelFormat.RGBA_8888). Nhưng ở phía bên kia G1 không hỗ trợ RGBA_8888 vì vậy gọi nó làm cho gradient thậm chí xấu hơn trước đây vì vậy Window.setFormat (PixelFormat.RGBA_8888) sẽ không hoạt động tốt trên các thiết bị không hỗ trợ nó.gradient mượt mà trên các thiết bị khác nhau

Cách chính xác giúp tô chuyển gradient của tôi trên tất cả các thiết bị mà ứng dụng của tôi sẽ chạy.

PS: tôi thấy một số chủ đề liên quan

How to draw a smooth/dithered gradient on a canvas in Android

Is it possible to dither a gradient drawable?

Trả lời

2

Mở hình ảnh của bạn trong Photoshop (hoặc Gimp hoặc Paint.NET hoặc bất cứ điều gì) và thêm một số lượng nhỏ của tiếng ồn. Sau đó, bạn không phải làm bất cứ điều gì trong mã.

+0

cảm ơn công việc của mình cho tôi ........ :) – yokees

1

Khi tải hình ảnh của bạn, đặt pixelFormat thành RGB_565 và đặt thànhĐặt thành true, nếu bạn vẽ thẳng đến màn hình mà không có sửa đổi nào khác.

Các màn hình thường không phải là 24 bit, thường nên làm điều đó đủ tốt, ít nhất là khá nhất quán xung quanh.

Bạn không cần sử dụng 8888 nếu bạn không cần alpha và sẽ không sửa đổi dữ liệu hình ảnh. Nó sẽ hiển thị trên 99% màn hình điện thoại di động như màu 16bit và không phải 24bit, vì đó là những gì các tấm hỗ trợ.

N1 sẽ luôn có vấn đề đóng lên vì ma trận mà chúng sử dụng cho bảng điều khiển có gấp đôi độ phân giải màu xanh lục.

+0

Vâng tôi đang sử dụng cùng một cách tiếp cận ... nó thực sự trông khá tốt trên hầu hết các thiết bị. Cảm ơn –

2

Bạn có thể sử dụng một hình dạng tùy chỉnh (đặt nó trong /drawable/gradient.xml hoặc một cái gì đó như thế):

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<gradient 
    android:startColor="#000000" 
    android:endColor="#ffffff" 
    android:angle="90"/> 
</shape> 

Bằng cách này nó sẽ được vẽ bởi các os và nó sẽ được hoàn toàn trơn tru.

0

Nếu run và thiết lập RGBA_888 không giúp vào số điện thoại, giải pháp có thể để thiết lập phần tử layerType-software, để vô hiệu hóa khả năng tăng tốc phần cứng

android:layerType="software" 

Đây cố định vấn đề của tôi trên Samsung S5 điện thoại.