Layout: statische statt relativer Werte

Nein ich sehe das ähnlich. Layouts für 1-2 Gerätegrößen und eventuell noch Landscape large oder sowas. Aber mehr braucht man imho einfach nicht.
Du hast natürlich Recht, dass Texte ein Problem sind, insbesondere wenn Übersetzungen in verschiedenen Sprachen ganz andere Längen haben.

Aber grundsätzlich funktioniert das Android System da schon gut und wenn man, wie der Threadersteller, sich genötigt fühlt für alle möglichen Bildschirmgrößen (wohlgemerkt Größen, nicht Auflösungen, in Kombination ist das nochmal mehr) zu designen macht man meiner Meinung nach etwas grundlegend falsch beim Design.
 
Kardroid schrieb:
Falls du also eine bessere Alternative für das Erstellen von XML-Design-Dateien in Android hat, bin ich nicht abgeneigt etwas noch zu lernen.
Nein, ich bin Anfänger. Bisher habe ich immer mit layout-small, normal, large und xlarge gearbeitet, um verschiedene Handygrößen zu unterstützen. Und da kam es zu solchen Problemen, dass eben manche Layouts total miserabel aussehen. Wie z.B. folgendes:
Die Verschachtelungen habe ich, weil ich die Elemente innerhalb einer Verschachtelung so leichter zentrieren kann. Dachte ich zumindest. Dann habe ich für 4,7" einen Code gemacht, wo die Worte "Large" in ihren jeweiligen Kästen zentriert sind und das sieht auch gut aus. Der gleiche Code sieht bei einem 4" Gerät aber miserabel aus, obwohl 4" und 4,7" beide unter layout-normal fallen. Wüsstet ihr evtl eine Lösung, warum der Text "Large" beim 4" Gerät so abgeschnitten ist während der gleiche Code auf einem 4,7" gut aussieht? Wie also kann man die Texte "Large" in ihren jeweiligen Kästen zentrieren, so dass 4" und 4,7" identisch aussehen?

verrutscht2.png
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_weight="1"
          android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_gravity="center_horizontal"
    android:layout_weight="0.8"
    android:orientation="horizontal"
    android:weightSum="1">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_margin="75dp"
            android:text="Large"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="50sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="75dp"
            android:text="Large"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="50sp" />

    </LinearLayout>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.4"
    android:orientation="horizontal"
    android:weightSum="1">


<LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.3"
        android:orientation="vertical">

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/pfeillinks" />

    </LinearLayout>
   
<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.4"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/kreis" />

</LinearLayout>
   
<LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="0.3"
        android:orientation="vertical">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:src="@drawable/pfeilrechts" />

    </LinearLayout>

</LinearLayout>
</LinearLayout>
 
Hallo Knoxxx,

ich glaube langsam, du bist unbelehrbar.
Die Zollgröße eines Endgerätes hat nichts mit seinen Proportionen und seinen DPs zu tun.

Die angebene Zollgröße ist ja die Hypothenuse der beiden Katheten (Höhe und Breite des Bildschirmes in Zoll).
Jetzt könntest du ein Endgerät haben, welches genau Quadratisch ist und die Länge und Breite der Seiten ist 2,828 Zoll groß.
Dann hast du in der Diagonale immer noch 4 Zoll.

Eine Diagonale von 4 Zoll bekommst du aber auch bei 1,5 Zoll Breite und 3,707 Länge hin.

Jetzt gehen wir davon aus, dass beide oben genannten Geräte die gleiche DPI Größe haben.
Dann müsste jetzt klar sein, dass wenn du den gleichen Text mit gleicher SP auf 2,828 Zoll schreibst, beispiel hier "Large" und dieser genau auf 2,828 Zoll passt, dass er nicht auf 1,5 Zoll passt, und bei 3,7 Zoll links und rechts Platz hätte.

Der SP-Wert bei einem Text in Android ist dafür gedacht, dass man den Text immer gleichgut lesen kann. Gleichgut lesen bedeutet, er wird immer in der gleichen Zentimetergröße dargestellt.
Das beste Beispiel hierfür die der Unterschied zwischen Handhelds und Tablets. Wenn man sich eine Internetseite auf einem Handy anschaut, kann man vielleicht nur 15 Zeilen anzeigen lassen. Auf einem Tablet sind es aber mehr als das doppelte, obwohl es sich um den gleichen Text handelt.
Natürlich könnte man jetzt auch den Text auf dem Tablet so groß machen, dass es wie auf dem Handy aussieht, aber der Text würde dann unnatürlich groß aussehen und zweitens verbraucht man Platz, den man auch anders benutzen könnte.

Jetzt kommen wir zu deinem Fall:
Falls du dir Geräte mit dem Emulator erstellst, dann benutzt du den AVD-Manager.
Beim AVD-Manager sind sogar zwei 4,7Zoll Geräte vorinstalliert. Das Nexus 4 und ein 4,7 Zoll WXGA Gerät.
Wenn du auf der rechten Seite schaust, dann siehst du, dass eins "long" ist, und eins "notlong".
Auch an den Pixeln kannst du erkennen, dass das eine 720Pixel in der Breite hat, und das andere 768 Pixel.
In der Länge sind beide 1280 Pixel lang.

Wie man oben bei dir sehen kann, hast du da schon mal ein Problem.
Das zweite ist eben die Größe deines Textes im Zusammenspiel mit der Länge des Gerätes.
Gehen wir mal davon aus, deine beiden Geräte haben 640DP in der Länge. Dein Text hat 50SP.
Jetzt ist es so, dass 50SP bei 640DP bei einem 4,7Zoll Gerät ca. 200DP sein könnten. Bei einem 4,0 Zoll Gerät sind es aber 250 DP.
Jetzt hättest du bei dem 4,7 Zoll Gerät noch 240 DP für deine Margins noch übrig, bei dem 4,0 Zoll Gerät aber nur noch 140DP.
Da du bei beiden "Large" in deinem Layout 75DP Margins hast, wird der Text bei dem kleineren Gerät abgeschnitten.
Das hat alles seine formale und logische Richtigkeit.

Meiner Meinung nach müsstest du den Text jetzt kleiner machen, damit er bei beiden lesbar ist. Natürlich ist dann klar, dass bei 4,7 Zoll du mehr Rand hast. Aber das ist bei einem Design von Android nun mal so.

Das war meine letzte längere Erklärung hier im Thread. Bitte lies dir den Link von Google durch.
 
Hi Kardroid,

vielen Dank für die viele Information! War etwas gestresst in letzter Zeit. Ich werde mir alles nochmal genau durchlesen...

LG
Knoxxx
 
Kardroid schrieb:
Ab welcher Android Version willst du denn unterstützen?
Wir machen bei B2B und B2C zurzeit nur noch ab 4.0.3.
Ob nicht noch viele Leute Handys mit älteren Versionen besitzen? Weiß ich nicht...
 
Kommt auch stark auf die Zielgruppe an. Bei meiner App sieht das so aus:
Code:
Android 4.4      1.752     33,31 %
Android 5.0      1.510     28,71 %
Android 5.1         877     16,67 % 
Android 4.2         360       6,84 %
Android 4.1         340       6,46 %
Android 4.3         309        5,87 %
Android 4.0.3/4   112        2,13 %

Also ein verschwindend geringer Anteil mit so alten Versionen wie 4.0.3
 
ah, interessant, vielen Dank!
 
Vielen Dank! Ich hätte noch eine Frage. Einige Emulatoren haben eine total schlechte Grafik. Man kann es an der Schrift sehen, es ist verzerrt. Und ich weiß nicht, wie man das abstellt?! Normalerweise muss man doch auch nichts extra einstellen und die Emulatoren funktionieren ganz normal oder? Bei 7" bspw habe ich das Problem nur im Portrait-Modus, aber nicht im Landscape?! Bei 10" laufen Portrait und Landscape nur verzerrt. Das 5,4" Gerät hingegen funktioniert einwandfrei...?!

Emulator.png
 
Zuletzt bearbeitet:
Hi, dieses Thema ist leider OffTopic.
Am besten du erstellst ein neues Thema dafür.
 
Kardroid schrieb:
Wir machen bei B2B und B2C zurzeit nur noch ab 4.0.3.
Im Android SDK Manager, hört es nach 4.0.3. (API15) ja auch fast schon auf. Danach folgen nur noch API10 und API8. Was ist mit den Werten dazwischen?
 
Du meinst Honeycomb? Das ist sowas von 2011 :D

Also mach dir keine Sorgen Honeycomb war nur für Tablets gedacht und für Smartphones nicht zugänglich.Vor HoneyComb war Android ledigllch für smartphones ausgelegt ...das wurde dann ein halbes Jahr später geändert indem man ab Android 4.xx beide vereinte.

Also ich mache auch nur ab API 14 weil ich damit einfach 94% der Android Nutzer erreiche.
Die die <API14 benutzen sind vllt irgendwelche GPS Systeme oder veraltete Notebooks oder weiß der Geier. für mich lohnt es sich auch nciht Nutzer die mit 3-4 Jahre alten Geräten rumlaufen zu versorgen und ich fasse mir manchmal an den Kopf wenn jemand Support für API 3 bereitstellt.


Ich finde Google sorgt zur Zeit für zu viel Aufwind mit Android. Anstatt etwas länger an einem Betriebssystem zu arbeiten und es besser zu testen, schmeißen die schon Vorabversionen auf den Markt und das in immer kürzeren Abständen. Kaum hat sich Lollipop mit 12% etwas etabliert schon Kommt Android M in 6 Monaten vorrausichtlich...Die Fragmentierung geht weiter.
 
ok danke! Kann man bei GooglePlay eigtl angeben, wenn eine App nicht für Tablets oder AndroidTV geeignet ist?
 
schon:

den support-screen tag einfach einpflegen

aber why?
 
Was heißt denn "einpflegen"?
Ich habe meine App nur im Portrait Modus und AndroidTV ist doch landscape?!
 
Zuletzt bearbeitet:
"einpflegen" bedeutet dass du nur die flags setzen solltest für die Größen die dir so vorschweben:

<supports-screens> | Android Developers

default ist true bei allen

Tablets haben ja sehr große ausmaße also könntest du es auf diese art und weise Tablets ausschließen.

Ansosnten sehe ich da keine andere Möglichkeit wie Android ein Tablet erkennen sollte.

Das wird sie jedoch nicht vom Download abhalten sondern versetzt deine App auf den Clients in einen ScreenCompatibility Mode Einzelheiten siehe hier:

Screen Compatibility Mode | Android Developers
 
Aber ich wollte nur wissen, ob der Nutzer auf der GooglePlay Seite sehen kann für welche Geräte die jeweilige App geeignet ist. Ich sehe immer nur ab welcher Android Version, aber nicht für welche Geräte. Daher dachte ich, dass man das bei GooglePlay gar nicht einstellen kann?!
 
Wie gesagt da ich denke du machst dir mehr über die erhöhte Fläche bei Tablets sorgen kannst du mit dem Verfahren die Flags zu setzen fahren. Ich glaube du kannst es nicht verhindern dass spezielle Geräte deine App runterladen oder nicht.(Nur anhand der API restriktion)

Warum möchtest du das machen btw? Ich kann nur mutmaßen da du dir scheinbar sehr große Sorgen machst wie deine App dargestellt wird...
Es gibt einen guten Spruch: Done is better than perfect ;)

How to restrict app to Android phones only - Stack Overflow
 
Du kannst im Play Store jedes Gerät einzeln ausschalten. Wenn du also eine Liste aller Android Tablets mit Google Play Zugriff hast, kannst du die von Hand von deiner App ausschließen. Aber ob du das möchtest :D
 
Das wollte ich nciht erwähnen weil es einfach lächerlich wäre das zu amchen hahaha stell dir mal vor da sitzt jemand und gibt wirklich jedes Gerät das er nciht mag dort ein ^^
 

Ähnliche Themen

5
Antworten
22
Aufrufe
1.423
590239
5
R
  • RalfKahl
Antworten
10
Aufrufe
306
RalfKahl
R
Zurück
Oben Unten