Android
Ondersteunende schermen met verschillende resoluties, maten
Zoeken…
Opmerkingen
Termen en concepten
Scherm grootte
Werkelijke fysieke grootte, gemeten als diagonaal van het scherm. Voor de eenvoud groepeert Android alle werkelijke schermformaten in vier algemene formaten: klein, normaal, groot en extra groot.
Schermdichtheid
De hoeveelheid pixels binnen een fysiek gebied van het scherm; meestal aangeduid als dpi (dots per inch). Een scherm met "lage" dichtheid heeft bijvoorbeeld minder pixels binnen een gegeven fysiek gebied, vergeleken met een scherm met "normale" of "hoge" dichtheid. Voor de eenvoud groepeert Android alle werkelijke schermdichtheden in zes gegeneraliseerde dichtheden: laag, gemiddeld, hoog, extra hoog, extra-extra-hoog en extra-extra-extra-hoog.
oriëntering
De oriëntatie van het scherm vanuit het gezichtspunt van de gebruiker. Dit is landschap of portret, wat betekent dat de beeldverhouding van het scherm respectievelijk breed of hoog is. Houd er rekening mee dat niet alleen verschillende apparaten standaard in verschillende oriëntaties werken, maar dat de oriëntatie tijdens runtime kan veranderen wanneer de gebruiker het apparaat roteert. Resolutie Het totale aantal fysieke pixels op een scherm. Bij het toevoegen van ondersteuning voor meerdere schermen werken applicaties niet direct met resolutie; toepassingen moeten zich alleen bezighouden met schermgrootte en -dichtheid, zoals gespecificeerd door de algemene grootte- en dichtheidsgroepen. Density-onafhankelijke pixel (dp) Een virtuele pixeleenheid die u moet gebruiken bij het definiëren van UI-lay-out, om lay-outdimensies of positie op een dichtheid-onafhankelijke manier uit te drukken. De dichtheid-onafhankelijke pixel is equivalent aan één fysieke pixel op een 160 dpi scherm, hetgeen de basislijndichtheid is die door het systeem wordt aangenomen voor een "medium" dichtheidsscherm. Tijdens runtime verwerkt het systeem op transparante wijze elke schaal van de dp-eenheden, indien nodig, op basis van de werkelijke dichtheid van het gebruikte scherm. De conversie van dp-eenheden naar schermpixels is eenvoudig: px = dp * (dpi / 160). Op een scherm van 240 dpi is 1 dp bijvoorbeeld 1,5 fysieke pixels. U moet altijd dp-eenheden gebruiken bij het definiëren van de gebruikersinterface van uw toepassing, om ervoor te zorgen dat uw gebruikersinterface correct wordt weergegeven op schermen met verschillende dichtheden.
eenheden
px
Pixels - komt overeen met werkelijke pixels op het scherm.
in
Duim - gebaseerd op de fysieke grootte van het scherm. 1 inch = 2,54 centimeter
mm
Millimeter - gebaseerd op de fysieke grootte van het scherm.
pt
Punten - 1/72 inch gebaseerd op de fysieke grootte van het scherm.
dp of dip
Densiteit-onafhankelijke pixels - een abstracte eenheid die is gebaseerd op de fysieke dichtheid van het scherm. Deze eenheden zijn relatief ten opzichte van een scherm van 160 dpi, dus één dp is één pixel op een scherm van 160 dpi. De verhouding van dp-tot-pixel zal veranderen met de schermdichtheid, maar niet noodzakelijk in directe verhouding. Opmerking: De compiler accepteert zowel "dip" als "dp", hoewel "dp" meer consistent is met "sp".
sp
Schaalonafhankelijke pixels - dit is net als de dp-eenheid, maar het wordt ook geschaald door de voorkeur van de gebruiker voor de lettergrootte. Het wordt aanbevolen om dit apparaat te gebruiken bij het opgeven van lettergroottes, zodat deze worden aangepast voor zowel de schermdichtheid als de voorkeur van de gebruiker. Van inzicht in dichtheid onafhankelijkheid in Android:
Eenheid | Beschrijving | Eenheden per fysieke inch | Dichtheid onafhankelijk | Dezelfde fysieke grootte op elk scherm |
---|---|---|---|---|
px | pixels | Verschilt | Nee | Nee |
in | Inches | 1 | Ja | Ja |
mm | millimeters | 25.4 | Ja | Ja |
pt | punten | 72 | Ja | Ja |
dp | Dichtheid onafhankelijke pixels | ~ 160 | Ja | Nee |
sp | Onafhankelijke pixels schalen | ~ 160 | Ja | Nee |
Referenties:
Het gebruik van configuratiekwalificaties
Android ondersteunt verschillende configuratie-kwalificaties waarmee u kunt bepalen hoe het systeem uw alternatieve bronnen selecteert op basis van de kenmerken van het huidige apparaatscherm. Een configuratiekwalificatie is een tekenreeks die u kunt toevoegen aan een bronnenmap in uw Android-project en geeft de configuratie aan waarvoor de bronnen zijn ontworpen.
Om een configuratiekwalificatie te gebruiken:
- Maak een nieuwe map in de res / map van uw project en geef deze de volgende indeling:
<resources_name>-<qualifier>
.<resources_name>
is de standaard resourcenaam (zoals tekenbaar of lay-out). -
<qualifier>
is een configuratie-kwalificatie die de schermconfiguratie opgeeft waarvoor deze bronnen moeten worden gebruikt (zoals hdpi of xlarge).
De volgende mappen met toepassingsbronnen bieden bijvoorbeeld verschillende lay-outontwerpen voor verschillende schermformaten en verschillende tekenbare bestanden. Gebruik de mipmap/
mappen voor opstartpictogrammen.
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
DP en SP converteren naar pixels
Wanneer u een pixelwaarde moet instellen voor iets als Paint.setTextSize
maar toch wilt dat het wordt geschaald op basis van het apparaat, kunt u dp- en sp-waarden converteren.
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);
U kunt ook een dimensiebron naar pixels converteren als u een context hebt om de bron uit te laden.
<?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);
Tekstgrootte en verschillende Android-schermformaten
Soms is het beter om slechts drie opties te hebben
style="@android:style/TextAppearance.Small"
style="@android:style/TextAppearance.Medium"
style="@android:style/TextAppearance.Large"
Gebruik klein en groot om te onderscheiden van de normale schermgrootte.
<TextView
android:id="@+id/TextViewTopBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/TextAppearance.Small"/>
Voor normaal hoeft u niets te specificeren.
<TextView
android:id="@+id/TextViewTopBarTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
Hiermee kunt u voorkomen dat u afmetingen voor verschillende schermformaten test en specificeert.