Android
Unterstützende Bildschirme mit unterschiedlichen Auflösungen, Größen
Suche…
Bemerkungen
Begriffe und Konzepte
Bildschirmgröße
Tatsächliche physische Größe, gemessen als Diagonale des Bildschirms. Zur Vereinfachung gruppiert Android alle tatsächlichen Bildschirmgrößen in vier allgemeinen Größen: klein, normal, groß und extra groß.
Bildschirmdichte
Die Anzahl der Pixel in einem physischen Bereich des Bildschirms. normalerweise als dpi (Dots per Inch) bezeichnet. Beispielsweise hat ein Bildschirm mit "niedriger Dichte" weniger Pixel innerhalb eines gegebenen physikalischen Bereichs im Vergleich zu einem Bildschirm mit "normaler" oder "hoher Dichte". Zur Vereinfachung gruppiert Android alle tatsächlichen Bildschirmdichten in sechs allgemeine Dichten: niedrig, mittel, hoch, extra hoch, extra extra hoch und extra extra extra hoch.
Orientierung
Die Ausrichtung des Bildschirms aus Sicht des Benutzers. Dies ist entweder Querformat oder Hochformat, dh das Seitenverhältnis des Bildschirms ist entweder groß oder groß. Beachten Sie, dass verschiedene Geräte nicht nur standardmäßig in unterschiedlichen Ausrichtungen arbeiten. Die Ausrichtung kann sich zur Laufzeit ändern, wenn der Benutzer das Gerät dreht. Auflösung Die Gesamtzahl der physischen Pixel auf einem Bildschirm. Wenn Sie Unterstützung für mehrere Bildschirme hinzufügen, arbeiten Anwendungen nicht direkt mit der Auflösung. Die Anwendungen sollten sich nur mit der Bildschirmgröße und -dichte befassen, wie in den allgemeinen Größen- und Dichtegruppen angegeben. Dichteunabhängiges Pixel (dp) Eine virtuelle Pixeleinheit, die Sie beim Definieren des UI-Layouts verwenden sollten, um Layoutdimensionen oder -position auf dichtenunabhängige Weise anzugeben. Das dichteunabhängige Pixel entspricht einem physischen Pixel auf einem Bildschirm mit 160 dpi. Hierbei handelt es sich um die Basisliniendichte, die das System für einen Bildschirm mit "mittlerer" Dichte annimmt. Zur Laufzeit behandelt das System die Skalierung der dp-Einheiten je nach Bedarf auf der Grundlage der tatsächlichen Dichte des verwendeten Bildschirms transparent. Die Umwandlung von dp-Einheiten in Bildschirmpixel ist einfach: px = dp * (dpi / 160). Auf einem Bildschirm mit 240 dpi entspricht 1 dp beispielsweise 1,5 physikalischen Pixeln. Sie sollten immer dp units verwenden, wenn Sie die Benutzeroberfläche Ihrer Anwendung definieren, um sicherzustellen, dass Ihre Benutzeroberfläche auf Bildschirmen mit unterschiedlichen Dichten angezeigt wird.
Einheiten
px
Pixel - entspricht den tatsächlichen Pixeln auf dem Bildschirm.
im
Zoll - basierend auf der physischen Größe des Bildschirms. 1 Zoll = 2,54 Zentimeter
mm
Millimeter - basierend auf der physischen Größe des Bildschirms.
pt
Punkte - 1/72 Zoll je nach Größe des Bildschirms.
dp oder dip
Dichteunabhängige Pixel - eine abstrakte Einheit, die auf der physischen Dichte des Bildschirms basiert. Diese Einheiten sind relativ zu einem Bildschirm mit 160 dpi, also ist ein Pixel ein Pixel auf einem Bildschirm mit 160 dpi. Das Verhältnis von dp zu Pixel ändert sich mit der Bildschirmdichte, jedoch nicht unbedingt in direktem Verhältnis. Hinweis: Der Compiler akzeptiert sowohl "dip" als auch "dp", obwohl "dp" eher mit "sp" übereinstimmt.
sp
Skalierungsunabhängige Pixel - Dies ist wie bei der dp-Einheit, wird jedoch auch nach der Einstellung der Schriftgröße des Benutzers skaliert. Es wird empfohlen, dieses Gerät bei der Angabe von Schriftgrößen zu verwenden, damit diese sowohl der Bildschirmdichte als auch den Vorlieben des Benutzers angepasst werden. Vom Verständnis der Dichteunabhängigkeit in Android:
Einheit | Beschreibung | Einheiten pro Zoll | Dichte unabhängig | Gleiche physische Größe auf jedem Bildschirm |
---|---|---|---|---|
px | Pixel | Variiert | Nein | Nein |
im | Zoll | 1 | Ja | Ja |
mm | Millimeter | 25.4 | Ja | Ja |
pt | Punkte | 72 | Ja | Ja |
dp | Dichte unabhängige Pixel | ~ 160 | Ja | Nein |
sp | Unabhängige Pixel skalieren | ~ 160 | Ja | Nein |
Verweise:
Konfigurationsqualifizierer verwenden
Android unterstützt mehrere Konfigurationsqualifizierer, mit denen Sie steuern können, wie das System Ihre alternativen Ressourcen basierend auf den Eigenschaften des aktuellen Gerätebildschirms auswählt. Ein Konfigurationsqualifikationsmerkmal ist eine Zeichenfolge, die Sie an ein Ressourcenverzeichnis in Ihrem Android-Projekt anhängen können und die Konfiguration angibt, für die die darin enthaltenen Ressourcen entworfen wurden.
So verwenden Sie ein Konfigurationsqualifikationsmerkmal:
- Erstellen Sie ein neues Verzeichnis im res / -Verzeichnis Ihres Projekts und benennen Sie es mit folgendem Format:
<resources_name>-<qualifier>
.<resources_name>
ist der Standard-Ressourcenname (z. B. Zeichenbar oder Layout). -
<qualifier>
ist ein Konfigurationsqualifier, der die Bildschirmkonfiguration angibt, für die diese Ressourcen verwendet werden sollen (z. B. hdpi oder xlarge).
Beispielsweise bieten die folgenden Anwendungsressourcenverzeichnisse unterschiedliche Layoutdesigns für unterschiedliche Bildschirmgrößen und verschiedene Zeichenobjekte. Verwenden Sie die mipmap/
Ordner für Launcher-Symbole.
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra-large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra-large in landscape orientation
res/drawable-mdpi/graphic.png // bitmap for medium-density
res/drawable-hdpi/graphic.png // bitmap for high-density
res/drawable-xhdpi/graphic.png // bitmap for extra-high-density
res/drawable-xxhdpi/graphic.png // bitmap for extra-extra-high-density
res/mipmap-mdpi/my_icon.png // launcher icon for medium-density
res/mipmap-hdpi/my_icon.png // launcher icon for high-density
res/mipmap-xhdpi/my_icon.png // launcher icon for extra-high-density
res/mipmap-xxhdpi/my_icon.png // launcher icon for extra-extra-high-density
res/mipmap-xxxhdpi/my_icon.png // launcher icon for extra-extra-extra-high-density
Konvertieren von dp und sp in Pixel
Wenn Sie einen Pixelwert für etwas wie " Paint.setTextSize
und dennoch auf der Grundlage des Geräts skaliert werden sollen, können Sie dp- und sp-Werte konvertieren.
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12f, metrics);
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 12f, metrics);
Alternativ können Sie eine Dimensionsressource in Pixel konvertieren, wenn Sie über einen Kontext zum Laden der Ressource verfügen.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="size_in_sp">12sp</dimen>
<dimen name="size_in_dp">12dp</dimen>
</resources>
// Get the exact dimension specified by the resource
float pixels = context.getResources().getDimension(R.dimen.size_in_sp);
float pixels = context.getResources().getDimension(R.dimen.size_in_dp);
// Get the dimension specified by the resource for use as a size.
// The value is rounded down to the nearest integer but is at least 1px.
int pixels = context.getResources().getDimensionPixelSize(R.dimen.size_in_sp);
int pixels = context.getResources().getDimensionPixelSize(R.dimen.size_in_dp);
// Get the dimension specified by the resource for use as an offset.
// The value is rounded down to the nearest integer and can be 0px.
int pixels = context.getResources().getDimensionPixelOffset(R.dimen.size_in_sp);
int pixels = context.getResources().getDimensionPixelOffset(R.dimen.size_in_dp);
Textgröße und verschiedene Android-Bildschirmgrößen
Manchmal ist es besser, nur drei Optionen zu haben
style="@android:style/TextAppearance.Small"
style="@android:style/TextAppearance.Medium"
style="@android:style/TextAppearance.Large"
Verwenden Sie klein und groß, um sich von der normalen Bildschirmgröße zu unterscheiden.
<TextView
android:id="@+id/TextViewTopBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/TextAppearance.Small"/>
Normalerweise müssen Sie nichts angeben.
<TextView
android:id="@+id/TextViewTopBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Auf diese Weise können Sie das Testen und Festlegen von Abmessungen für verschiedene Bildschirmgrößen vermeiden.