2012-09-17 3 views
3

J'ai implémenté une application iOS basée sur mgwt et PhoneGap.Affichage GWT, mgwt et retina

J'ai une image

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

et deux fichiers correspondants topMenuTitle.png (320px par 40px) et [email protected] (640px par 80px). Je ne sais pas quelle est la meilleure façon d'afficher l'image dans l'affichage de la rétine lorsqu'elle est appliquée (par exemple, chargez [email protected] lorsque le périphérique prend en charge l'affichage rétine et topMenuTitle.png dans le cas contraire).

Jusqu'à présent, j'ai essayé d'utiliser retina.js mais cela n'a pas fonctionné. Je suppose que Retinajs traite les images au moment où la page se charge, et ne traite pas les images qui apparaîtront plus tard.

Répondre

4

Avec mgwt il y a une variable de liaison différée mgwt.os. Il peut avoir différentes valeurs:

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

Vous pouvez utiliser cette variable et utiliser différentes ressources dans votre application. Jetez un oeil à la thématisation façon dont on fait en mgwt pour voir comment fournir des images différentes:

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

si vous cherchez un moyen facile de charger une image que vous pouvez faire quelque chose comme:

OsDetection d = MGWT.getOsDetection(); 

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

Bien sûr, une meilleure façon de le faire est d'utiliser la liaison différée, mais c'est correct pour certaines images dans votre code.

+0

merci votre réponse (et le grand mgwt par ailleurs), y at-il un moyen de charger l'image elle-même pas son style (par exemple image src pas d'image de fond)? –

+0

J'ai mis à jour la réponse –

+0

Eh bien, il manque quelque chose. La taille de l'image doit être égale à la moitié lorsque l'image de la rétine est utilisée. – confile

3

Utilisez DeferredBinding. Voici un exemple:

http://retina.teknonsys.com/

+0

merci de votre réponse, j'ai essayé votre suggestion mais j'ai échoué en raison d'une erreur (voir question éditée). Y a-t-il un moyen de l'utiliser avec UiBinder? Merci –

+0

Dans l'exemple teknonsys vous ne remplacez pas les bundles (qui sont des interfaces), vous remplacez les usines de regroupement qui produisent des classes. –

+0

pour obtenir ma ImageResource J'utilise 'AppBundle.INSTANCE.topMenuImage()' Je n'ai pas de fabrique de paquets. J'espère ne pas avoir à changer ma logique de code! –

Questions connexes