2013-03-14 29 views
11

Ứng dụng Android trả lại kích thước không hợp lệ (320x480) trên sự kiện onDeviceReady, nhưng sau vài giây kích thước sẽ chính xác.PhoneGap/Cordova Android nhận được kích thước màn hình sau khi bậtDeviceReady

Làm cách nào để chúng tôi có được kích thước chính xác ngay từ đầu? Hoặc có bất kỳ sự kiện nào mà tôi có thể nhận được kích thước chính xác không?

Tôi đang sử dụng chức năng này để có được kích thước:

function getWindowSizes() { 
 var windowHeight = 0, windowWidth = 0; 
 if (typeof (window.innerWidth) == 'number') { 
     windowHeight = window.innerHeight; 
     windowWidth = window.innerWidth; 
      
 } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { 
     windowHeight = document.documentElement.clientHeight; 
     windowWidth = document.documentElement.clientWidth; 
      
 } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) { 
    windowHeight = document.body.clientHeight; 
    windowWidth = document.body.clientWidth; 
 } 
 return [windowWidth, windowHeight]; 
} 

Viewport:

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />

Sử dụng Cordova 2.5.0.

UPD:
Như bạn có thể thấy trên ứng dụng ảnh chụp màn hình này ra mắt với kích thước nhỏ hơn. Ngay cả dự án Cordova trống cũng làm được điều này. Làm thế nào tôi có thể sửa lỗi này?

enter image description here

Cảm ơn!

+2

bất kỳ tiến bộ trong vấn đề đó ? Bất kỳ câu trả lời nào đã làm việc cho ya? – Fardin

+0

Tôi gặp sự cố, tiến trình nào? – poordeveloper

+0

Thật không may là tôi không phát triển các ứng dụng Cordova nữa. Nếu tôi có thời gian, tôi sẽ cố gắng tái sản xuất và kiểm tra các giải pháp sau đây. Nhưng nếu nó không hiệu quả với bạn, nó cũng không có tác dụng với tôi. – dymv

Trả lời

3

Xóa thuộc tính chiều cao, chiều rộng và mật độ trên chỉ mục tiêu đề meta.

+0

Bạn có thể giải thích câu trả lời của mình chi tiết hơn một chút không? Có vẻ như một người mù bị mù ... – Trinimon

+1

Tôi sử dụng Thierry

0

Cố gắng xóa vị trí: thuộc tính tuyệt đối trong lớp ứng dụng (bên trong index.css). Điều này làm việc cho tôi.

1

Cố gắng loại bỏ mật độ mục tiêudpi trong tiêu đề.

dpi thiết bị dựa trên pixel vật lý trong khi pixel css là pixel logic, chúng có vài lần khác nhau, nếu bạn buộc chúng giống nhau, bạn sẽ thấy màn hình bị kéo dài.

window.devicePixelRatio có thể cung cấp cho bạn kết quả của việc chuyển đổi (Trên webkit)

Cập nhật:.

Liên kết này cung cấp một số chi tiết về cách thức hoạt động: https://petelepage.com/blog/2013/02/viewport-target-densitydpi-support-is-being-deprecated/

+0

Firefox cung cấp một giá trị cho 'window.devicePixelRatio'. – Chris

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