2016-03-04 2 views
0

Actuellement, j'utilise des pourcentages pour gérer l'interface utilisateur de mon application Android, mais je pense que ce n'est pas la meilleure solution.Une grille de coordonnées pour tous les appareils Android (Appcelerator)

Je trouve cela dans la documentation:

The coordinates grid 
Titanium uses a grid coordinate system for layout. Grid locations are based on the system unit (platform-dependent unit). This means that by default on iOS, elements are positioned on a density-independent grid and on Android on a density-dependent grid. The net result is that on iOS, elements are positioned in visually the same locations regardless of the actual density of the screen. On Android, elements are positioned at the same absolute pixel locations and might lay out differently depending on the device. 

iPhone with either original or retina display is based on a 320 x 480 dip grid. 
iPad is based on a 1024 x 768 dip grid. 
Android device screen sizes vary. Considering these emulator examples: 

HVGA emulator is 320 x 480 px 
WVGA800 emulator is 480 x 800 px 
WVGA854 emulator is 480 x 854 px 
Remember that you can specify dp or dip units on Android (and even set an app-level default in tiapp.xml) to achieve the same density-independent grid as offered by default on iOS. 

Comme je pense, cette dernière phrase devrait dire si je mets la valeur par défaut au niveau de l'application dans tiapp.xml Dp ou immersion, alors je devrais avoir une coordonnée grille avec 320 px (dip) de largeur ... Mais quand je démarre mon application, Windows et Views width sont 360 ... Pourquoi? Où est le problème?

Voici quelques informations displayCaps de mon périphérique.

[INFO] : Ti.Platform.displayCaps.density: xxhigh 
[INFO] : Ti.Platform.displayCaps.dpi: 480 
[INFO] : Ti.Platform.displayCaps.platformHeight: 1776 
[INFO] : Ti.Platform.displayCaps.platformWidth: 1080 
[INFO] : Ti.Platform.displayCaps.logicalDensityFactor: 3 
[INFO] : Ti.Platform.displayCaps.xdpi: 442.45098876953125 
[INFO] : Ti.Platform.displayCaps.ydpi: 443.3450012207031 

Répondre

0

Sur Android displayCaps.platformWidth et Height toujours signaler en pixels, tandis que sur iOS ils sont toujours en dp. (source: docs).

Le paramètre ti.ui.defaultunit permet de déterminer quelle unité est utilisée lorsque vous utilisez un nombre pour des propriétés telles que width:100. Vous pouvez toujours forcer une unité en utilisant une chaîne comme width:'100px'.

Il est toujours préférable d'utiliser dp afin que, indépendamment de la dpi de l'appareil, la taille sera à peu près la même.