2016-04-07 12 views
2

Ich baue eine App mit der Fresco Bibliothek, von Facebook.Fresko, wie man Bilder für verschiedene Geräte skaliert

Ich habe Probleme zu verstehen, wie ich eine Ansicht mit Fresco implementieren sollte, wenn meine App unter verschiedenen Geräten verwendet werden kann. Wie Sie in den beigefügten Bildern sehen können, habe ich ein Nexus6, ein NexusOne und ein Nexus7.

Alle von ihnen haben die gleiche Fresco Drawee, (200dp x 200dp). Wie ich in der Dokumentation von Fresco gelesen habe, ist es notwendig und obligatorisch, die Bildgröße zu korrigieren. Ich habe jedoch Schwierigkeiten zu verstehen, wie ich etwas erreichen kann, das so einfach ist wie ein ImageView, das 50% der Bildbreite mit Fresco verwendet.

Das gewünschte Ergebnis wäre, ein Bild zu haben, das die Hälfte des Bildschirms (in Bezug auf die Breite) verwendet, und den restlichen Platz für die verschiedenen Texte (Titel + Beschreibungen) zu lassen.

Normalerweise würde ich dies mit Gewicht tun, aber ich bin mir nicht sicher, wie dies mit der Bibliothek zu erreichen, oder was die besten Praktiken wäre.

Basierend auf this Frage (und Dokumentation), bin ich nicht sicher, ob das Hinzufügen eines Listeners die beste Option ist. Ich verstehe nur nicht, wie Facebook oder andere Anwendungen, die diese Bibliothek nutzen, dies für verschiedene Geräte tun.

Vielen Dank im Voraus

Nexus One Nexus 6 enter image description here

Der Code dieser gezeigten Bilder ist im Grunde die folgenden:

  <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:weightSum="10"> 

      <com.facebook.drawee.view.SimpleDraweeView 
       android:id="@+id/my_image_view" 
       android:layout_width="200dp" 
       android:layout_height="200dp" 

       fresco:actualImageScaleType="focusCrop" 
       fresco:backgroundImage="@drawable/user_icon" 
       fresco:fadeDuration="300" 
       fresco:placeholderImage="@color/common_action_bar_splitter" 
       fresco:placeholderImageScaleType="fitCenter" /> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:layout_toRightOf="@+id/my_image_view"> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:textSize="20sp" 
        android:text="Title 1" /> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:textSize="15sp" 
        android:textColor="@color/menu_color" 
        android:text="Description 1" /> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:textSize="20sp" 
        android:text="Title 2" /> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:textSize="15sp" 
        android:textColor="@color/menu_color" 
        android:text="Description 2" /> 


      </LinearLayout> 


     </RelativeLayout> 

UPDATE:

ich auch d Ich weiß nicht, wie man ein Vollbild bekommt. Wenn wir entweder die Dimensionen angeben müssen oder match_parent verwenden sollen, aber die Verwendung von match_parent auf beiden Seiten den gesamten Elternteil verwenden würde, wie bekomme ich etwas wie das Bild, das das Facebook-Bild zeigt ?.

Ich glaube @Gueorgui Obregon ist eine gute Idee, aber ich frage mich immer noch, ob das Problem das Design-Muster der Verwendung von 50% des Bildschirms für ein Bild ist. Nehmen Sie zum Beispiel 2 Handy-Modelle mit den gleichen Abmessungen (MDPI zum Beispiel), aber einer von ihnen ist ein bisschen breiter als der andere. Mit dem Dimensions-Ansatz, den ich bekommen würde, braucht man auf einem Handy die Hälfte des Bildschirms, aber auf der anderen Seite würde es etwas mehr/weniger dauern.

Zusammenfassend: Wo ist das Problem? Ist das Denken in Prozent eine schlechte Idee beim Entwerfen von Ansichten? Soll ich meinem Designer sagen, dass es eine schlechte Design-Idee für Android ist, Prozentsätze zu verwenden? Was noch wichtiger ist, wie kann Facebook etwas wie das letzte Foto erreichen (wo die Bilder ~ 33% des Bildschirms verwenden)?

Facebook Image

Image % on Facebook

+0

Meine Antwort Ihnen helfen? –

Antwort

1

Ihre dimensions.xml für verschiedene Werte Ordner für verschiedenen Bildschirmen nutzen könnten.

res/values/dimensions.xml 
res/values-sw600dp/dimensions.xml -> 7+ inches 
res/values-sw720dp/dimensions.xml -> 10+ inches 

auf jeder Dimension Fügen Sie den gewünschten Wert

res/Werte/dimensions.xml

<dimen name="my_image_view_width">200dp</dimen> 
<dimen name="my_image_view_height">200dp</dimen> 

res/Werte-sw720dp/dimensions.xml

<dimen name="my_image_view_width">400dp</dimen> 
<dimen name="my_image_view_height">400dp</dimen> 

Dann einfachverwenden 210 und @dimen/my_image_view_height in Ihrem SimpleDraweeView wie diese

<com.facebook.drawee.view.SimpleDraweeView 
    android:id="@+id/my_image_view" 
    android:layout_width="@dimen/my_image_view_width" 
    android:layout_height="@dimen/my_image_view_height" 
    fresco:actualImageScaleType="focusCrop" 
    fresco:backgroundImage="@drawable/user_icon" 
    fresco:fadeDuration="300" 
    fresco:placeholderImage="@color/common_action_bar_splitter" 
    fresco:placeholderImageScaleType="fitCenter" /> 

hoffe, das hilft !!

+0

Vielen Dank für Ihre Antwort Gueorgui, ich habe meine Antwort aktualisiert, da ich noch ein paar Fragen zu diesem Ansatz habe. Ich denke, es ist sicherlich besser als feste DPs für alle Dimensionen zu verwenden, aber ich habe immer noch Zweifel, ob dies der beste Ansatz ist. – Waclock

Verwandte Themen