Mise en page Android et redimensionnement automatique des images

Mon application android dispose actuellement de deux mises en page pour son écran de démarrage, portrait et paysage. Les deux utilisent le même format simple - une image de la même taille que l'écran, dans l'un linéaire simple mise en page:

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

L'image utilisée est 320w x 480 h et Android automatiquement redimensionnée à la taille de l'écran, quelle que soit la taille de l'écran de l'appareil. Évidemment, l'image n'est pas aussi forte lorsqu'il est redimensionné pour une tablette par exemple.

Je précise que mon but est de réduire la taille installée de l'application finale, autant que possible, et je suis conscient que je pourrais inclure les différents types de mises en page et la taille des mêmes images différentes pour chaque taille d'écran.

Mon écran de démarrage est composé du nom de l'application dans le tiers supérieur de l'écran, puis une image dans les deux tiers inférieurs de l'écran. Afin d'économiser de la mémoire, je tiens à recadrer le nom de l'application et de l'image en deux images séparées, et puis de les afficher dans un linéaire de la mise en page verticale pour les appareils tenu en mode portrait. Je vais ensuite utiliser un linéaire de la mise en page horizontale de l'image et nom de l'application pour le mode paysage.

Pour la disposition de portrait, j'ai obtenu ceci:

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

Quand je l'affiche ci-dessus dans eclipse, il semble ok pour les téléphones intelligents, mais les images ne sont pas redimensionnées lors de l'affichage sur une tablette, même si je suis en utilisant le android:scaleType="fitCenter" argument. J'ai essayé d'utiliser les trempettes au lieu de fill_parent dans l'imageview layout_width et layout_height mais cela ne fonctionne pas non plus.

Ce que je fais mal? Est-il une autre façon de le faire?

Grâce

J'ai édité la question d'inclure cette nouvelle version du XML basé sur @KaHa6u 's ci-dessous. Alors maintenant, j'ai:

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

Qui s'adapte à la verticale, mais pas horizontalement, donc je me retrouve avec grand mince images lorsque la taille de l'écran augmente.

source d'informationauteur basinbasin | 2011-07-26