Bearbeitete Frage:
Mobile Auflösung:
Ich möchte verschiedene Bildschirm-dpi wie die folgenden Auflösungen entwerfen.
320 x 480
,
480 x 800,
540
x 960, 720 x 1280 (Samsung S3),
1080
x 1920 (S4, Nexus5, Nexus 5x, Moto G4), 2560 x 1440 (Nexus 6, Nexus 6p, Samsung Edge)
Tablet-Auflösung:
480 x 800 (Mikromax),
600 x 1024 ( Samsung Tab2), 800 x
1280 (Nexus 7),
1200 x 1920 (neuer Nexus 7),
2048 x 1536 (Nexus 9)
Ich möchte je nach Bildschirmauflösung des Geräts unterschiedliche Schriftgrößen verwenden .
Q1) Wie kann das best
gelöst werden problem
?
F2) Was ist die beste Option für Wurfcodierung oder XML?
F3) Welcher Zeichenordner repräsentiert welche Geräteauflösung?
F4) Größe des Application Launcher-Symbols für unterschiedliche Auflösung?
android
android-custom-view
android-xml
android-drawable
screen-resolution
Bhavesh Jethani
quelle
quelle
Antworten:
Größe des App Launcher-Symbols in Pixel für unterschiedliche Auflösung
Mobile Auflösung
Tablet-Layouts:
Verwenden Sie folgende Ordner, wenn Sie Tablet-spezifische Layouts wünschen:
layout-large-mdpi (1024x600) layout-large-tvdpi (800x1280) layout-large-xhdpi (1200x1920) layout-xlarge-mdpi (1280x800) layout-xlarge-xhdpi (2560x1600)
Drawables-Ordner:
Handy, Mobiltelefon
res/drawable (default) res/drawable-ldpi/ (240x320 and nearer resolution) res/drawable-mdpi/ (320x480 and nearer resolution) res/drawable-hdpi/ (480x800, 540x960 and nearer resolution) res/drawable-xhdpi/ (720x1280 - Samsung S3, Micromax Canvas HD etc) res/drawable-xxhdpi/ (1080x1920 - Samsung S4, HTC one, Nexus 5, etc) res/drawable-xxxhdpi/ (1440X2560 - Nexus 6,Samsung S6edge).
Tablet-Auflösung:
Schriftgrößen:
Verwenden Sie vordefinierte
textAppearance
:Die Textgröße wird automatisch entsprechend der Gerätedichte eingestellt.
<TextView android:textAppearance="?android:attr/textAppearanceSmall"/> <TextView android:textAppearance="?android:attr/textAppearanceMedium"/> <TextView android:textAppearance="?android:attr/textAppearanceLarge" />
Beispielnutzung:
<TextView style="@android:style/TextAppearance.Small" android:text="Sample Text - Small" /> <TextView style="@android:style/TextAppearance.Medium" android:text="Sample Text - Medium" /> <TextView style="@android:style/TextAppearance.Large" android:text="Sample Text - Large" />
Verwendung
dimension.xml
für jedes Gerät:In Google IO Pdf sehen wir die folgende Struktur:
Handy, Mobiltelefon:
res/values/dimens.xml(default) res/values-ldpi/dimens.xml (240x320 and nearer resolution) res/values-mdpi/dimens.xml (320x480 and nearer resolution) res/values-hdpi/dimens.xml (480x800, 540x960 and nearer resolution) res/values-xhdpi/dimens.xml (720x1280 - Samsung S3, Micromax Canvas HD, etc) res/values-xxhdpi/dimens.xml (1080x1920 - Samsung S4, HTC one, etc)
Tablette:
Für Tablet können Sie spezifischere Ordner wie verwenden
values-xlarge
,values-large
.res/values-large/dimens.xml (480x800) res/values-large-mdpi/dimens.xml (600x1024)
oder
res/values-sw600dp/dimens.xml (600x1024) res/values-sw720dp/dimens.xml (800x1280) res/values-xlarge-xhdpi/dimens.xml (2560x1600 - Nexus 10") res/values-large-xhdpi/dimens.xml (1200x1920 - Nexus 7"(latest))
Auszug aus der Unterstützung mehrerer Bildschirme :
quelle
Zuerst erstellen Sie die Ordner mit verschiedenen Werten für verschiedene Bildschirme. Fügen Sie die Größe entsprechend den Bildschirmen in die
res->values->dimens.xml
Datei ein und rufen Sie die einfache Schriftgröße mit auf"@dimen/text_size"
.res/values/dimens.xml res/values-small/dimens.xml res/values-normal/dimens.xml res/values-xlarge/dimens.xml //for small <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="text_size">15sp</dimen> </resources> //for normal <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="text_size">20sp</dimen> </resources> //for large <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="text_size">30sp</dimen> </resources> //for xlarge <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="text_size">40sp</dimen> </resources>
und rufen Sie die Schriftgröße
TextView
wie unten angegeben ab.<TextView android:id="@+id/lblHeader" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="@dimen/text_size" android:textStyle="bold" android:typeface="serif" />
quelle
Um die Probleme unterschiedlicher Bildschirmauflösungen und unterschiedlicher Dichte zu vermeiden, dimensioniere und positioniere ich alles basierend auf der prozentualen Breite und Höhe des Bildschirms. Wenn die Größe des Texts basierend auf der prozentualen Breite oder Höhe des Bildschirms geändert wird, hat die Schriftart auf allen Geräten und allen Auflösungen die richtige Größe. Verwenden Sie einfach diese Funktion, um die richtige Schriftgröße basierend auf der Breite und Höhe des Bereichs zu erhalten:
private float SetTextSize(String text, int width, int height) { Paint paint = new Paint(); float textWidth = paint.measureText(text); float textSize = (int) ((width / textWidth) * paint.getTextSize()); paint.setTextSize(textSize); textWidth = paint.measureText(text); textSize = (int) ((width / textWidth) * paint.getTextSize()); // Re-measure with font size near our desired result paint.setTextSize(textSize); // Check height constraints FontMetricsInt metrics = paint.getFontMetricsInt(); float textHeight = metrics.descent - metrics.ascent; if (textHeight > height) { textSize = (int) (textSize * (height / textHeight)); paint.setTextSize(textSize); } return textSize; }
Hier ist der Code, um die Breite und Höhe des Bildschirms zu ermitteln:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { Point size = new Point(); getWindowManager().getDefaultDisplay().getSize(size); screenWidth = size.x; screenHeight = size.y; } else { Display display = getWindowManager().getDefaultDisplay(); screenWidth = display.getWidth(); screenHeight = display.getHeight(); }
Um die gewünschte Schriftgröße zu erhalten, erstellen Sie einfach einen Bereich basierend auf der Bildschirmbreite und der Bildschirmhöhe und passen Sie ihn an, bis die Schriftgröße richtig aussieht. Sobald Sie es richtig aussehen lassen, sollte es auf allen Geräten richtig aussehen.
float textSize = SetTextSize("text", (int) (screenWidth * 0.1), (int) (screenHeight * 0.15));
ich hoffe das hilft dir
quelle
sqrt(phoneWidthInches / defaultWidthInches)
, fürdefaultWidthInches
die Sie sie entwerfen. 2x größere Telefone wären also 1,4x größere Schriftarten. (Verwenden Sie stattdessenheight
oderdiagonal
Formel entsprechend). Wichtig : Verwenden Sie NICHT die Breite in Pixel .inches = pixels / dpi
.Grundsätzlich müssen Sie einen Textstil wie folgt erstellen:
<style name="CodeFont"> <item name="android:textSize">30sp</item> </style>
Lesen Sie hier mehr darüber http://developer.android.com/guide/topics/ui/themes.html
Verwenden Sie die Anleitung zur Unterstützung von Android für verschiedene Bildschirme, um die verschiedenen Größen für verschiedene Bildschirme in den richtigen Res-Ordnern zu erstellen, wie unter http://developer.android.com/guide/practices/screens_support.html beschrieben
Randnotiz: Ich verstehe nicht wirklich, in welcher Situation Sie das tun möchten. Wenn Sie SP-Einheiten für Schriftgrößen verwenden, werden die Schriftarten so skaliert, dass sie auf verschiedenen Telefonen mehr oder weniger gleich groß sind.
quelle
Zuerst Ihr Anwendungsdesign für eine Auflösung.
Beispiel: Angenommen, Ihre mobile Auflösung beträgt 380 * 480
mobile screen width:380 textView size is 80dp Assume : if width is 380dp then 100 % then textview width 80dp then how many %(per). ower answer is: 25 %
Ermitteln Sie die Bildschirmgröße programmgesteuert mithilfe der folgenden Formel
DisplayMetric displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); ScreenHeight = displaymetrics.heightPixels; ScreenWidth = displaymetrics.widthPixels; txt_height = (int)((ScreenHeight*14.58)/100); txt_width = (int)((ScreenWidth*37.5)/100); LinearLayout.LayoutParams normal_param = new LinearLayout.LayoutParams(txt_height ,txt_width ); txt_Name.setLayoutParams(normal_param);
quelle
Ich denke, das ist eine gute Antwort:
Textgröße und verschiedene Android-Bildschirmgrößen
Aber hier, wie Sie es mit Bildschirmauflösung machen können:
Sie können Ressourcenverzeichnis "Werte" für jede Auflösung wie erstellen
values-wWIDTHp-hHEIGHTdp (you can also use values-wWIDTHp or values-hHEIGHTdp) for example: 320*480 will be values-w320p-h480dp
Erstellen Sie in jedem Verzeichnis (einschließlich der Standardwerte dir) eine Datei mit dem Namen "dimension.xml" mit folgendem Inhalt:
for exmaple (the value related to the resolution): <dimen name="def_font_size">10sp</dimen>
Jetzt können Sie "@ dimen / def_font_size" verwenden oder einen Stil im Standardwertverzeichnis erstellen.
Fügen Sie dies der "styles.xml" hinzu:
<style name="FontSize"> <item name="android:textSize">@dimen/def_font_size</item> </style>
quelle
Ich habe eine Funktion erstellt, die die Größe von dp in die Größe entsprechend der Bildschirmgröße konvertiert, und sie funktioniert gut für mich. Jeder, der Probleme mit der Textgröße je nach Bildschirm hat, sollte dies versuchen.
public float convertFromDp(int input) { final float scale = getResources().getDisplayMetrics().density; return ((input - 0.5f) / scale); }
Geben Sie einfach den von ihm angegebenen Wert für die Größe der Textansicht programmgesteuert wie unten an
tvTextView1.setTextSize(convertFromDp(24));
quelle
Erstellen Sie für die Unterstützung von Nexus 6-Geräten den Ordner drawable-560dpi und legen Sie alle Bilder darin ab.
quelle