Tất cả các độ phân giải khác nhau của các sản phẩm Android khác nhau đều khiến tôi phát điên.Cách hỗ trợ tất cả các độ phân giải khác nhau của các sản phẩm Android
Ứng dụng android đầu tiên của tôi mà tôi đã viết được thiết kế để hỗ trợ ba độ phân giải thường được sử dụng: 240x320 (LDPI), 320x480 (MDPI) và 480x800 (HDPI). 480x854 không gây hại cho bố cục vì nó có cùng chiều rộng với 480x800.
Tôi cũng đã mua các thiết bị sau để kiểm tra các ứng dụng Android của tôi trên: Samsung Galaxy châu Âu (LDPI) HTC Desire Z (hdpi)
May mắn bạn gái của tôi có một HTC Wildfire S (mdpi) vì vậy tôi đã có nhiều nghị quyết nhất.
Nhưng hôm nay, anh tôi đã tải xuống ứng dụng của tôi trên HTC Sensation mới của mình mà vẫn có độ phân giải khác 540x960 (HDPI?). Mà không hiển thị ứng dụng của tôi như nó phải và có lẽ hầu hết các máy tính bảng sẽ không hiển thị nó một cách chính xác.
Những gì tôi đã làm với ứng dụng đầu tiên của tôi đã được đọc ra mật độ và sau đó thiết lập các thông số:
public void set_ui_parameters() {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
if(metrics.densityDpi == DisplayMetrics.DENSITY_HIGH){
textSize = 35;
timeWidth = 80;
dayWidth = 110;
moneyWidth = 50;
} else if(metrics.densityDpi == DisplayMetrics.DENSITY_MEDIUM){
textSize = 35;
timeWidth = 53;
dayWidth = 73;
moneyWidth = 33;
} else if(metrics.densityDpi == DisplayMetrics.DENSITY_LOW){
textSize = 28;
timeWidth = 40;
dayWidth = 55;
moneyWidth = 25;
}
}
Bên cạnh các thông số tôi cũng đã tạo drawables cho LDPI, mdpi và hdpi. Điều này làm việc tốt cho các nghị quyết được mô tả ở trên, nhưng điều này phụ thuộc vào độ phân giải màn hình i.c.w. kích thước màn hình và không thành công, ví dụ như HTC sensatoin với 540x960.
Tôi biết rằng không phải tất cả các nghị quyết đều được sử dụng thường xuyên, nhưng tôi muốn hỗ trợ càng nhiều càng tốt. Stats of Screen Sizes and Densities
Tôi đã đọc Supporting Multiple Screens nhiều lần nhưng không tìm thấy câu trả lời rõ ràng cho "vấn đề" này.
Vì vậy, tôi nên đọc độ phân giải và đặt thông số theo độ phân giải thay vì mật độ? Đây có phải là một điều thông minh để làm hoặc làm thế nào để bạn đối phó với điều này?
Cảm ơn rất nhiều thông tin của bạn!
Cảm ơn các giá trị rất sử dụng, nhưng điều này không giải quyết được sự cố với độ phân giải 540x960 hoặc tôi sai. Vì SQRT (540^2 + 960^2) /4.3 = 256,15 (HTC Sensation) giống như SQRT (480^2 + 800^2) /3.7 = 252,15 (HTC Desire Z) và cả hai sẽ được lập chỉ mục dưới dạng HDPI khi màn hình của Sensation rộng hơn 60px. – patrick
Vâng ... vấn đề ở đây là bạn sẽ không thể xử lý 100% kích thước màn hình. Vì vậy, ví dụ ... nếu bạn muốn xem văn bản bao trùm chính xác chiều rộng của màn hình, ngay cả khi bạn áp dụng tất cả các kỹ thuật có thể, sẽ có một số thiết bị sẽ bao bọc văn bản hoặc nội dung nào đó. Quan điểm của tôi là, bạn không thể làm cho ứng dụng của bạn trông chính xác như bạn muốn trên tất cả các thiết bị ... bạn phải phù hợp với việc làm cho nó trông tốt hơn hết mức có thể. – Cristian