Tengo una aplicación de Android que puede reproducir audio/video y mostrar imágenes. Para videos, quiero superponer un botón de reproducción en la parte superior de la imagen de vista previa y también en vistas de lista ... Ahora mismo, cómo lo hago es con un ImageView en xml, y luego el drawable es una capa Definí programáticamente porque una de las imágenes es dinámica, el botón de reproducción es estático, por supuesto. Quiero alinear el botón de reproducción 10px desde la parte inferior y centrado horizontalmente.Android - La mejor manera de superponer un botón de reproducción en una imagen/miniatura
Mi ImageView se define como esto (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"/>
El ImageView es parte de una forma donde el usuario puede editar el título y otra información. Luego, en mi actividad ahora crear la lista de capas de esta manera:
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);
Esto sólo funciona cuando la orientación de la imagen es horizontal. Tenga en cuenta que la imagen/miniatura es MINI_KIND, lo que significa que se supone que es 512 x 384, pero estoy viendo que en realidad no es del tamaño. En mi teléfono son 480x800 u 800x480 dependiendo de la orientación. la cámara estaba en .. Como mi ancho/alto de diseño está predefinido, solo quiero una forma de mantener la capa del botón de reproducción en absoluto y alinearla de la misma manera cada vez ...
La otra forma obvia de hacerlo sería utilizar un diseño relativo (¿o quizás un diseño de marco?) pero esperaba evitarlo ya que estoy usando el mismo código para mostrar imágenes y videos (ambos tienen una vista previa en miniatura de la imagen, pero solo videos) debe tener el botón de reproducción en ellos).
¿Alguna idea de cómo alinear las capas con una lista de capas, o alternativas que funcionarían igual de bien o mejor?
Lo hice pero no pude obtener clics para registrarme más en mi gridview – CQM