Ich habe eine Anwendung läuft auf Android, auf dem ich ein Raster zeichnen muss. Ich mag die Zellen des Gitters auf allen Geräten der gleichen Größe sein, und ich habe diese Methode gefunden, das zu tun:Android - Kann nicht gleiche Größe Quadrat auf allen Geräten zeichnen
float scale = getResources().getDisplayMetrics().density;
float SIZE = DESIRED_DP_VALUE * scale + 0.5f;
DESIRED_DP_VALUE ist ein Wert, den ich für die Zellen Dimension gesetzt.
Ich habe die App auf zwei Smartphones und einem Tablet ausprobiert: Das Tablet und eines der Smartphones haben die Zellen der gleichen Größe, das andere Smartphone nicht.
Dies ist die Methode I verwenden um das Raster zu zeichnen:
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
int count=0;
while(count<=row){
float coordinate=count*SIZE;
canvas.drawLine(coordinate,0,coordinate,column*SIZE,whitePaint);
count++;
}
count=0;
while(count<=column){
float coordinate=count*SIZE;
canvas.drawLine(0,coordinate,row*SIZE,coordinate,whitePaint);
count++;
}
}
Das Gitter auf jedem Gerät korrekt ziehen. Wo könnte das Problem sein?
Ihr gewünschter DP-Wert ist wahrscheinlich so, wie er heißt - ein xy-dp-Wert. DPs werden auf verschiedenen Bildschirmgrößen unterschiedlich angezeigt (sie sind Dichtepixel und einige Geräte haben unterschiedliche Bildschirm-DPs). Dies bedeutet, dass Sie mehrere Gerätebildschirme unterstützen sollten, die in XMLs standardmäßig erstellt wurden. In Ihrem Fall würde ich versuchen, die Informationen über den Gerätebildschirm DP zu erhalten und eine switch-Anweisung zu machen, um zu sehen, in welche Kategorie es fällt. Und dann passe den "Wunsch-DP-Wert" für diese Bildschirme an. –