2016-04-11 1 views
0

J'essaie de créer une règle précise sur Android pour tout appareil et j'ai rencontré un problème. Fondamentalement, mes mesures sont trop éloignées pour mes deux appareils différents. Je m'attendais à ce que ce soit le cas, mais pas pour autant que cela se produise.Mesures les plus précises possibles - Android

Actuellement pour onTouchEvent Je viens imprimer l'emplacement x en pouces avec le code suivant

DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    float x = event.getX()/metrics.xdpi; 
    System.out.println(x); 
    return true; 

et je reçois les résultats suivants

http://imgur.com/S85Kmsr (3.01 devrait être 3.10)

Fondamentalement , mon émulateur est constamment .1 pouces off et ma galaxie s5 augmente en continu d'environ 0,5 pouces

Pour ces résu lts, j'utilise une largeur de marqueur de 1dp et une séparation de marqueur de 8 dp. Cela me donne les résultats les plus précis sur mon s5.

10dp est 0,625 pouce qui est la distance à laquelle un pouce doit être séparé entre chaque marqueur.

Malgré la largeur de 1dp et la séparation de 8dp me donnant des résultats précis sur mon S5, la largeur de 1dp et la séparation de 9dp (ce qu'elle devrait probablement être) me donne des résultats parfaits sur l'émulateur androïde. Cependant, sur mon S5, les mesures sont désactivées de 0,16 pouce par pouce. Je suis honnêtement perdu sur ce qu'il faut faire. Je veux que ce soit aussi précis que possible entre tous les appareils.

Répondre

0

Faites confiance à l'appareil réel sur toutes les choses sur un émulateur. Mais quant aux mesures exactes, vous ne les obtiendrez pas parfaitement. A dp est de 1/160ème de pouce, mais ne sont pas de vrais DPI que Clean- une galaxie s5 est 432. 1 dp serait 2.7 pixels que des moyens 8 dp est de 21,6 pixels. Donc, vous seriez au large de .6/21.6 ou 2.7%.

Si vous constatez une erreur de plus en plus importante au cours de votre règle, cela peut être corrigé - il est probable que vous fassiez vos calculs pour permettre une erreur additive. Mais vous devrez poster votre onDraw pour le réparer.

+0

Ce qui est bizarre, c'est qu'il n'y a pas d'erreur croissante quand je change la largeur de séparation de 8 à 9 sur l'émulateur. Avec 8 pour chaque marqueur de pouce, l'erreur augmente de 0,1, mais avec 9 j'obtiens la réponse exacte sur chaque pouce. – bfergs