2016-04-11 6 views
0

Ich versuche, ein genaues Lineal auf Android für jedes Gerät zu erstellen, und ich habe ein Problem festgestellt. Grundsätzlich sind meine Messungen für meine zwei verschiedenen Geräte zu weit entfernt. Ich habe erwartet, dass dies der Fall ist, aber nicht für den Grad, dass es passiert.Genaueste Messungen möglich - Android

Zeit für onTouchEvent drucke ich nur die x-Position in Zoll mit dem folgenden Code

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

und ich folgende Ergebnisse

http://imgur.com/S85Kmsr

Grundsätzlich bekommen (3,01 sollte 3.10 sein) , mein Emulator ist ständig 0,1 Zoll aus und meine Galaxie s5 steigt kontinuierlich um etwa 0,5 Zoll

Für diese resu lts, ich verwende eine Markerbreite von 1dp und einen Markerabstand von 8dp. Dies gibt mir die genauesten Ergebnisse auf meinem s5.

10dp ist 0,625 Zoll, das ist, wie weit ein Zoll zwischen jedem Marker getrennt werden sollte.

Trotz 1dp Breite und 8dp Trennung gibt mir genaue Ergebnisse auf meinem S5, 1dp Breite und 9dp Trennung (was es wahrscheinlich sein sollte) gibt mir perfekte Ergebnisse auf dem Android-Emulator. Bei meinem S5 sind die Messungen jedoch um 0,16 Zoll pro Zoll versetzt.

Ich bin ehrlich gesagt verloren, was zu tun ist. Ich möchte, dass dies zwischen allen Geräten so genau wie möglich ist.

Antwort

0

Vertrauen Sie das echte Gerät auf alle Dinge über einen Emulator. Aber für genaue Messungen - Sie werden sie nicht perfekt bekommen. Ein dp ist 1/160 Zoll, aber echte dpis sind nicht so sauber - eine Galaxie s5 ist 432. 1 dp wäre 2,7 Pixel Das bedeutet 8 dp ist 21,6 Pixel. Sie wären also bei 0,6/21,6 oder 2,7%.

Wenn Sie im Laufe Ihres Lineals einen zunehmenden Fehler feststellen, kann dies behoben werden. Es ist wahrscheinlich, dass Sie bei der Berechnung additive Fehler machen. Aber du musst dein onDraw veröffentlichen, um es zu reparieren.

+0

Was seltsam ist, ist, dass es keinen zunehmenden Fehler gibt, wenn ich die Trennungsbreite von 8 bis 9 auf dem Emulator ändere. Mit 8 für jeden Zoll Marker steigt der Fehler um 0,1, aber mit 9 bekomme ich die genaue Antwort auf jeden Zoll. – bfergs

Verwandte Themen