2012-09-17 56 views
3

我已經實施了基於mgwt和PhoneGap的iOS應用程序。GWT,mgwt和視網膜顯示屏

我有一個圖像

<g:Image url="resources/img/topMenuTitle.png"></g:Image> 

和兩個對應文件topMenuTitle.png(320像素由40像素)和[email protected](640像素由80px)。

我不知道什麼是應用時視網膜顯示器顯示圖像的最佳方式(即負載[email protected]當設備支持視網膜顯示和topMenuTitle.png其他)。

到目前爲止,我嘗試使用retina.js,但它沒有奏效。我的猜測是Retinajs在頁面加載的時候處理圖片,並且它不處理稍後會顯示的圖片。

回答

4

隨着mgwt有一個推遲結合可變mgwt.os.它可以有不同的值:

<define-property name="mgwt.os" values="iphone, ipad, retina, ipad_retina, android, android_tablet, blackberry, desktop" /> 

您可以使用該變量並在您的應用程序中使用不同的資源。 看看順便主題化的mgwt做是爲了看如何提供不同的圖像:

http://code.google.com/p/mgwt/wiki/Styling

如果你正在尋找一種簡單的方式來加載,你可以這樣做的圖像:

OsDetection d = MGWT.getOsDetection(); 

Image img = null; 
if(d.isRetina() || isIPadRetina()){ 
    img = new Image("retinaurl"); 
}else{ 
    img = new Image("nonretinaurl"); 
} 

當然,更好的方法是使用延遲綁定,但這對您的代碼中的某些圖像是可以的。

+0

謝謝你的答案(和偉大的mgwt的方式),有沒有一種方法來加載圖像本身,而不是它的風格(即圖像src不是背景圖像)? –

+0

我已經更新了答案 –

+0

那麼,有一些缺失。使用視網膜圖像時,圖像大小必須設置爲一半。 – confile

3

使用DeferredBinding。這裏是一個例子:

http://retina.teknonsys.com/

+0

感謝您的回覆,我嘗試了您的建議,但由於錯誤而失敗(請參閱編輯的問題)。還有什麼方法可以將它與UiBinder一起使用?謝謝 –

+0

在teknonsys的例子中,你不會取代bundle(它是接口),而是替換生成類的bundle工廠。 –

+0

讓我的ImageResource使用'AppBundle.INSTANCE.topMenuImage()'我沒有捆綁工廠。我希望我不必改變我的代碼邏輯! –