Verwendet setWidth (int Pixel) geräteunabhängige Pixel oder physikalische Pixel als Einheit? Setzt setWidth (100) beispielsweise die Breite einer Ansicht auf 100 Einbrüche oder 100 Pixel?
Vielen Dank.
Verwendet setWidth (int Pixel) geräteunabhängige Pixel oder physikalische Pixel als Einheit? Setzt setWidth (100) beispielsweise die Breite einer Ansicht auf 100 Einbrüche oder 100 Pixel?
Vielen Dank.
Es werden Pixel verwendet, aber ich bin sicher, Sie fragen sich, wie Sie stattdessen Dips verwenden sollen. Die Antwort ist in TypedValue.applyDimension()
. Hier ist ein Beispiel für die Konvertierung von Dips in px im Code:
// Converts 14 dip into its equivalent px
Resources r = getResources();
int px = Math.round(TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 14,r.getDisplayMetrics()));
Der richtige Weg, um eine konstante Anzahl von DIPs im Code zu erhalten, besteht darin, eine Ressourcen-XML-Datei zu erstellen, die dp-Werte enthält.
Verweisen Sie dann wie folgt auf die Ressource in Ihrem Code:
Der von Ihnen zurückgegebene Float wird entsprechend der Pixeldichte des Geräts skaliert, sodass Sie keine Konvertierungsmethode in Ihrer gesamten Anwendung replizieren müssen.
quelle
Methode setWidth (100), stellen Sie 100 px als Breite ein (nicht in dp). Daher können auf verschiedenen Android-Handys Probleme mit der Breite auftreten. Verwenden Sie daher die Messung in dp anstelle von Pixeln. Verwenden Sie den folgenden Code, um die Messung in dp der Probenbreite zu erhalten = 300px und Höhe = 400px.
quelle
Quelle (@Romain Guy)
quelle
Pixel Natürlich fragt die Methode nach Pixeln als Parameter.
quelle
Basierend auf über Antworten , die gut zu mir funktioniert, habe ich ein paar erzeugen Hilfsmethoden , fügen Sie sie einfach in Ihrem utils sie in ganzen Projekt zu verwenden.
quelle