Android - Meilleure façon de superposer un bouton de lecture sur une image / miniature

J'ai une application android qui peut de lecture audio/vidéo et de montrer des images.
Pour les vidéos que je veux à la superposition d'un bouton de lecture sur le dessus de l'aperçu de l'image et aussi dans les vues de liste..
Maintenant comment je fais c'est avec une ImageView en xml, puis le drawable est une couche de la couche de liste-qui-je définir par programmation, car l'une des images est dynamique, le bouton jouer est statique, bien sûr. Je veux aligner le bouton de lecture 10px à partir du bas, et centré horizontalement.

Mon ImageView est définie comme ceci (en xml)

<ImageView 
          android:id="@+id/EvidencePreview"      
          android:layout_width="267dp"
          android:layout_height="201dp"
          android:scaleType="centerCrop"
          android:layout_margin="3dp"
          android:layout_gravity="center_horizontal|center_vertical"/>

L'ImageView est partie d'un formulaire où l'utilisateur peut modifier le titre et d'autres informations.
Ensuite dans mon activité maintenant, je créer la liste des calques comme ceci:

Resources resources = mContext.getResources();
Drawable playOverlayDrawable = resources.getDrawable(R.drawable.play_overlay_large);                        
Drawable[] layers = new Drawable[2];
layers[0] = Drawable.createFromPath(tb.filePath);
layers[1] = playOverlayDrawable;
LayerDrawable layerDrawable = new LayerDrawable(layers);
ViewGroup.LayoutParams lp = iv.getLayoutParams();

int imageHeight = lp.height;
int imageWidth = lp.width;
int overlayHeight = layers[1].getIntrinsicHeight();
int overlayWidth = layers[1].getIntrinsicWidth();
int lR = (imageWidth - overlayWidth) / 2;
int top = imageHeight - (overlayHeight + 10);
int bottom = 10;
layerDrawable.setLayerInset(1, lR, top, lR, bottom);
iv.setImageDrawable(layerDrawable);

Cela ne fonctionne que lorsque l'orientation de l'image est à l'horizontale.
Gardez à l'esprit que l'image/vignette est la MINI_KIND ce qui signifie que ses censé être de 512 x 384 mais je vois qu'il n'est pas vraiment la taille.. Sur mon téléphone, ils sont soit 480x800 ou de 800x480 en fonction de l'orientation de l'appareil photo..
Depuis ma mise en page largeur/hauteur est pré-définies, je veux juste un moyen de garder le bouton de lecture de la couche de mise à l'échelle et de l'aligner la même façon à chaque fois..

L'autre de manière évidente à faire, ce serait relatif à la mise en page (ou peut-être un cadre de mise en page?) mais j'espérais pour éviter que depuis que j'utilise le même code pour afficher à la fois des images et des vidéos (qui ont tous deux une image miniature d'aperçu, mais seulement les vidéos doivent avoir le bouton de lecture sur eux).

Aucune idée de comment aligner les couches avec une couche de liste, ou des solutions de rechange qui pourrait fonctionner tout aussi bien ou mieux?

source d'informationauteur Matt Wolfe