76 votes

Vues superposées dans Android

Est-il possible d'avoir cumul des points de vue dans Android? Je voudrais avoir une ImageView avec une image png transparente à l'avant et un autre point de vue à l'arrière-plan.

edit:

C'est ce que j'ai en ce moment, le problème est que l'image dans le imageView n'est pas transparent, les parties qui devraient être transparentes sont juste du noir.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/gallerylayout"
>
<Gallery android:id="@+id/overview"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

 <ImageView android:id="@+id/navigmaske"
 	android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/navigmask"
    /> 

</RelativeLayout>

edit:

Je l'ai eu à travailler, c'était un fichier de thème à partir d'un autre programmeur de l'équipe. Juste changé ce

<item name="android:background">#FF000000</item>

pour ce

<item name="android:background">#00000000</item>

71voto

Reto Meier Points 55904

Android gère la transparence dans tous les points de vue et un drawable (y compris les images PNG) en natif, le scénario que vous décrivez (partiellement transparent ImageView face à un Gallery) est certainement possible.

Si vous rencontrez des problèmes, il peut être apparenté à la mise en page ou de votre image. J'ai répliqué à la disposition que vous décrivez et réalisé avec succès l'effet que vous êtes après. Voici la configuration que j'ai utilisé.

<RelativeLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/gallerylayout"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <Gallery
    android:id="@+id/overview"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
  />
  <ImageView
    android:id="@+id/navigmaske"
    android:background="#0000"      
    android:src="@drawable/navigmask"
    android:scaleType="fitXY"
    android:layout_alignTop="@id/overview"
    android:layout_alignBottom="@id/overview"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
  />
</RelativeLayout>

Notez que j'ai changé le parent RelativeLayout pour une hauteur et une largeur de fill_parent comme est généralement ce que vous voulez pour une Activité principale. Ensuite, j'ai aligné le haut et le bas de l' ImageView pour le haut et le bas de l' Gallery pour s'assurer qu'il est centré en face d'elle.

J'ai aussi explicitement définir l'arrière-plan de l' ImageView transparent.

Comme pour l'image dessiné lui-même, si vous mettez le fichier PNG quelque part pour me regarder, je peux l'utiliser dans mon projet et voir s'il est responsable.

9voto

reflog Points 4994

Regardez aussi FrameLayout , voilà comment l'application Galerie de l'appareil photo implémente la superposition des boutons de zoom.

7voto

Prasanta Points 71

Si vous souhaitez ajouter votre écran de superposition personnalisé à la disposition, vous pouvez créer une disposition linéaire personnalisée et prendre le contrôle du dessin et des événements clés. Vous pouvez utiliser mon didacticiel - Superposition sur la mise en page Android - http://prasanta-paul.blogspot.com/2010/08/overlay-on-android-layout.html

1voto

Fred Grott Points 2004

La galerie visible change la visibilité, ce qui vous permet de recouvrir une autre vue. l'application exemple Home a quelques bons exemples de cette technique.

-3voto

Prashast Points 4064

Oui c'est possible. Le défi, cependant, est de faire leur mise en page correctement. Le moyen le plus simple de procéder consiste à utiliser AbsoluteLayout, puis à placer les deux images à l'endroit souhaité. Vous n'avez rien besoin de spécial pour le png transparent, sauf l'ajout ultérieur à la mise en page.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X