ich erstelle eine einfache Test-App "Target SDK API 16 (4.1 Jelly Beans)" Bildschirm 3.7 (480x800 hdpi).
diese App sieht auf 3.7 (480x800) großartig aus, aber wenn ich sie auf einem anderen Bildschirmgerät wie 2.7 (240x320), 7.0 (1024x600), 10.1 (1280x800) ausführe, wird die Bildschirmauflösung durcheinander gebracht oder sieht schlecht aus.
zum besseren Verständnis siehe Screenshot:
2,7 (240 x 320)
http://postimg.org/image/m3sob88mp/
3,7 (480 x 800)
http://postimg.org/image/wf513w0c1/
7.0 (1024 x 600)
http://postimg.org/image/fc298djn5/
10,1 (1280 x 800)
http://postimg.org/image/isk5gon7p/
ich möchte, dass dies mit allen Bildschirmgrößen kompatibel ist/perfekt aussieht, so wie es in 3.7 (480x800) aussieht.
wie man die Größe automatisch anpasst, kompatibel, die Bildschirmgröße für alle Android-Geräte anpasst, damit es in jeder Bildschirmauflösung perfekt aussieht.
oder muss ich eine andere App oder eine andere Bildschirmgröße erstellen?.
was ich versucht habe, den Bildschirm kompatibel zu machen, ist: Diese Zeilen wurden zu "AndroidManifest.xml" hinzugefügt.
<supports-screens>
Android:resizeable="true"
Android:smallScreens="true"
Android:normalScreens="true"
Android:largeScreens="true"
Android:xlargeScreens="true"
Android:anyDensity="true"
</supports-screens>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.usd.quiztest"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="16" />
<supports-screens>
Android:resizeable="true"
Android:smallScreens="true"
Android:normalScreens="true"
Android:largeScreens="true"
Android:xlargeScreens="true"
Android:anyDensity="true"
</supports-screens>
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.usd.quiztest.Logo"
Android:label="@string/app_name"
Android:theme="@Android:style/Theme.Black.NoTitleBar" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:name="com.usd.quiztest.First"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q1"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q2"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q3"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q4"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q5"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.FinalPage"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Score"
Android:label="@string/app_name" >
</activity>
</application>
</manifest>
first_screen.xml (Dies ist der Bildschirm, der im Screenshot gezeigt wird)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/RelativeLayout1"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
<ImageView
Android:id="@+id/imageView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"
Android:layout_marginTop="30dp"
Android:contentDescription="ql"
Android:gravity="center"
Android:src="@drawable/ql" />
<Button
Android:id="@+id/start_button"
Android:layout_width="254dp"
Android:layout_height="wrap_content"
Android:layout_below="@+id/imageView1"
Android:layout_centerHorizontal="true"
Android:layout_marginTop="30dp"
Android:text="Start Quiz Test"
Android:textColor="#000000" />
</RelativeLayout>
Es gibt einige Dinge, die entscheidend sind, wenn Sie verschiedene Bildschirmgrößen unterstützen möchten:
drawables-hdpi
, drawables-xhdpi
usw.)dp
anstelle von px
als Maßeinheit für die Größe.Weitere Informationen zur Unterstützung mehrerer Bildschirmgrößen finden Sie hier .
Bearbeiten:
Um verschiedene Tasten-/Schriftgrößen und Ränder zu verwenden, sollten Sie den dimens.xml
verwenden.
res/values-hdpi/dimens.xml
res/values-xhdpi/dimens.xml
Beispiel dimens.xml
:
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
verwenden Sie lineares Layout als Hauptlayout und unterteilen Sie es in Teil drei, vier oder fünf. Verwenden Sie dazu weightSum, bis Sie es teilen möchten. Verwenden Sie dann andere lineare Unterlayouts und weisen Sie jedem linearen Unterlayout aus dem gesamten Hauptlayout weightSum zu. Verwalten von UI-Widgets in den Unterlayouts. Hier ist das Beispiel unten
Sie sollten das Constraint-Layout verwenden. Sie können Abhängigkeiten zwischen Objekten erstellen ... und sollten "match_constraints", "match_parent", "wrap_content" für die Größe verwenden. Und auch Ränder verwenden. Sie können lernen , wie Sie ein Responsive erstellen Benutzeroberfläche mit ConstraintLayout
Sie müssen verschiedene Layout Ordner und Werte Ordner mit unterschiedlichen Dimensionen erstellen. Wenden Sie dann die Größen in XML aus den Dimensionsordnern an, die sich dann auf einen bestimmten Layoutordner beziehen.
Unter dem folgenden Link habe ich eine großartige Lösung gefunden, die ich für alle meine Apps ohne Probleme und mit einer Reihe neuer Techniken verwende, um Bildschirmkompatibilität zu erzielen.