wake-up-neo.com

automatische Größenänderung, Kompatibilität und Anpassung der Bildschirmgröße für alle Android-Geräte

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>
4
Smith

Es gibt einige Dinge, die entscheidend sind, wenn Sie verschiedene Bildschirmgrößen unterstützen möchten:

  • Verwenden Sie unterschiedliche Zeichen für jeden Bildschirmdichte-Bucket (drawables-hdpi, drawables-xhdpi usw.)
  • Verwenden Sie dp anstelle von px als Maßeinheit für die Größe.
  • Vermeiden Sie absolute Größen, verwenden Sie Ränder und lassen Sie Android diese entsprechend skalieren.

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>
7
Leandros

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

2
Bashir ahmad

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

1
Samir Elekberov

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.

Android-Bildschirmkompatibilität

0
Parikshit Patil