Android layouts und das automatische anpassen der Bildgröße

Meine android-app hat derzeit zwei layouts für seine splash-screen, Porträt und Landschaft. Beide verwenden die gleichen einfachen format - ein Bild, das die gleiche Größe wie der Bildschirm, statt in einem einfachen linearen layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<ImageView
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:scaleType="fitCenter"
        android:src="@drawable/splash_p"
       />
</LinearLayout>

Das Bild ist 320w x 480h und Android automatisch skaliert es auf den Bildschirm zu passen, unabhängig von der Bildschirmgröße des Geräts an. Natürlich, das Bild ist nicht so scharf, wenn Sie in der Größe für ein tablet zum Beispiel.

Sollte ich darauf hinweisen, dass hier mein Ziel ist die Verringerung der installierten Größe des endgültigen Anwendung so viel wie möglich, und ich bin mir bewusst, dass ich auch verschiedene layouts und Größen von der gleichen Bilder, die für jede unterschiedliche Bildschirmgröße.

Mein splash-screen besteht aus den Namen der app in das Obere Drittel des Bildschirms, und dann ein Bild in den unteren zwei Dritteln des Bildschirms. Um Speicher zu speichern, will ich die Ernte der app-name und das Bild in zwei einzelne Bilder, und dann zeigt Sie in eine lineare vertikale layout für Geräte-statt im hochformat. Ich werde dann verwenden Sie eine lineare horizontale Anordnung des Bildes und dann den app-Namen für landscape-Modus.

Für das hochformat habe ich dieses:

     <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
        <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent"            android:layout_height="wrap_content" android:orientation="vertical">
        <View android:layout_height="45dp" android:layout_width="45dp" />   
        <ImageView android:layout_height="fill_parent" 
        android:src="@drawable/splashtext" 
        android:scaleType="fitCenter" 
        android:layout_gravity="center" 
        android:layout_width="fill_parent"></ImageView>

        <View
        android:layout_height="35dp"
        android:layout_width="35dp" />      

       <ImageView
       android:scaleType="fitCenter"
        android:src="@drawable/splashpic"
       android:layout_height="fill_parent" android:scaleType="fitCenter" android:layout_width="fill_parent" android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>

Wenn ich die oben in eclipse, sieht es ok für Smartphones, aber die Bilder sind nicht skaliert, bei der Anzeige auf einem tablet, obwohl ich mit android:scaleType="fitCenter" - argument. Ich habe versucht, mit dips anstelle von fill_parent in der Bildansicht layout_width und layout_height aber das funktioniert auch nicht.

Was mache ich falsch? Gibt es einen anderen Weg, dies zu tun?

Dank

Ich habe bearbeitet die Frage, die auch diese überarbeitete XML-basiert auf dem @KaHa6u 's Hilfe unten. So, jetzt habe ich:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent" 
   android:orientation="vertical">
    <LinearLayout android:id="@+id/linearLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical">
<View
        android:layout_height="15dp"
        android:layout_width="15dp"
 /> 
<ImageView android:layout_height="wrap_content" 
        android:src="@drawable/splashtext" 
        android:adjustViewBounds="true"
        android:scaleType="fitXY" 
        android:layout_gravity="center" 
        android:layout_width="wrap_content" 
        android:layout_weight="1">
        </ImageView>


<View
        android:layout_height="15dp"
        android:layout_width="15dp"
 /> 
<ImageView
       android:scaleType="fitXY"
       android:src="@drawable/splashpic" 
       android:adjustViewBounds="false"
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_weight="4" 
       android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>

Welche skaliert vertikal, aber nicht horizontal, so dass ich am Ende mit großen, dünnen Bilder, wenn der Bildschirm vergrößert.

InformationsquelleAutor basinbasin | 2011-07-26

Schreibe einen Kommentar