2016-04-04 3 views
0

Sorry, wenn diese Frage vor gefragt wurde, in diesem Fall war es schwer, es mit der Suche zu finden, aber hier gehen wir:Android DP Grenze für garantierten Raum

Wenn Sie DP Pixel in Android Studio, Sie wird manchmal feststellen, dass die Elemente auf einem echten Gerät oder Emulator im Vergleich zur Vorschau breiter oder kürzer werden. Dies ist bei unterschiedlichen Dichten sinnvoll.

Was ich frage mich ist, wenn es eine gewisse goldene Grenze, in Bezug auf Höhe und/oder Breite, die garantiert, dass, wenn Sie alle Inhalte innerhalb dieser Grenze halten, nichts aus dem Bildschirm wird, egal was die Bildschirmdichte des Geräts ist.

Zum Beispiel, wenn ich ein Schachbrett machen möchte, möchte ich es so breit wie möglich, aber immer auf jedem Bildschirm passen. Gibt es hier eine goldene Grenze?

Antwort

-1

Verwenden Sie keine absoluten Werte dafür, da Sie nie wissen, wie groß der Bildschirm ist. Es gibt sogar Apps, um den in der App gemeldeten dp zu wählen.
Lassen Sie uns mit Ihrem Beispiel gehen. Sie können eine Ansicht Cell für Ihr Schachbrett haben. Sie könnten sie dann in einem Linearlayout ausrichten (View statt Cell verwendet):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="8"> 

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

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/white" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/black" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/white" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/black" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/white" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/black" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/white" /> 

     <View 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:background="@android:color/black" /> 

    </LinearLayout> 

    ... 

Dies würde folgendes Ergebnis geben (Im obigen Beispiel habe ich nur die erste Zeile zeigen):

Sample image

Wie Sie sehen können, wird der Bildschirm perfekt verwendet (Da in der Stammansicht verwendet wird), ohne absolute Werte zu verwenden. Sie können dies natürlich an Ihre speziellen Bedürfnisse anpassen, da Sie wahrscheinlich mehr Ansichten dort hinstellen möchten.

Hinweis: Tun Sie es nicht in der Realität. Ich verwende in dem Beispiel geschachtelte Gewichte, die schlecht für die Leistung sind. Dies ist nur für Sie, um eine Vorstellung davon zu bekommen, wie es geht.

+0

Danke für den Tipp, aber DP ist kein absoluter Wert, oder? Es ist relativ zu einem Bildschirm mit 160 dpi. Also, wenn ich es richtig darstelle, sollte es eine bestimmte Grenze geben (sagen wir mal, nur eine Zahl, 800 dpi in der Höhe, 300 dpi in der Breite), die sicherstellt, dass es in jeden Bildschirm passt. Ihre Lösung wird in der Tat funktionieren, aber wenn Gewichte für die Leistung schlecht sind, was ist die bessere Alternative? – OhDannyBoy

+0

Was ist, wenn der Bildschirm kleiner ist? Das ist sehr hypothetisch, aber es könnte solche Geräte geben (sehr preiswerte oder intelligente Uhren). Das Problem ist, dass Sie * nicht wissen *. Auch die Verwendung von DP garantiert nicht, dass das Layout überall gleich aussieht. Das kann für den Benutzer sehr verwirrend sein. Aber sicher, Sie können einen Wert finden, der gut aussieht, aber nicht garantiert auf jedem Bildschirm funktioniert. – rubengees

+0

Anstelle eines LinearLayout ohne verschachtelte Gewichtungen können Sie das PercentLayout verwenden, das als Support-Bibliothek verfügbar ist. Oder erstellen Sie das Layout dynamisch nur aus dem Code, indem Sie für jede Zelle die richtige Breite und Höhe berechnen. Ich empfehle, eine benutzerdefinierte Ansicht zu schreiben, die genau das tut, was Sie wollen. – rubengees