Question

Je travaille avec la version 1.6 du code du scanner de codes à barres ZXing.

Bien que la version de cette application sur l'Android Market (3,53) fonctionne très bien sur mon incroyable, le ViewFinderView semble mal quand je compile moi-même (3.5beta).

J'ai trouvé que la taille de la toile par défaut du ViewFinderView (qui remplit tout l'écran) est 533x320, tandis que les dimensions de l'écran sont réelles 800x480.

Ainsi, dans la méthode onDraw, le ViewFinderView assume les coordonnées d'écran pour le rectangle du viseur, mais les appliquer dans les coordonnées de toile de onDraw. Ce résultat dans le viseur se tirer trop loin et trop grand dans les dimensions x et y.

Alors ce qui détermine que les dimensions réelles de la toile votre vue se? Dans mon cas, la toile est réduite d'un tiers par rapport aux coordonnées de l'écran. Je ne trouve aucune différence dans le code qui pourraient affecter cette entre les versions 3.5beta et 3,53.

Était-ce utile?

La solution

Je crois que la demande ne déclare pas de support pour les écrans avec une densité variable. Il y a une balise appelée <supports-screens> dans AndroidManifest.xml et il a un paramètre anyDensity. Si la valeur true, on suppose que l'application peut gérer des écrans avec des densités différentes, si elle est définie à false, échelles Android l'écran lui-même si l'application peut tirer à l'écran d'une taille différente de celle du réel en fonction de la densité de l'écran.

Par défaut, ce paramètre est réglé sur true si les objectifs d'application API de niveau 4 et supérieur et à false autrement. Ceci est fait parce que, avant les applications Android 1.6 ont été faites pour une taille d'écran fixe et densité, et en commençant par Android 1.6 cela a changé, si compability devait en arrière être maintenue.

Dans le cas où l'écran présente une densité élevée, ce qui correspond à un coefficient 1,5. Donc, si vous dessinez un écran à la hauteur de 800 px, cela est considéré comme le même que le dessin à l'écran de 533 px avec une densité normale.

Si vous voulez que le Canvas d'avoir la taille « réelle », anyDensity doit être réglé sur true ou au moins minSdkVersion à 4 et plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top