Ho un'applicazione Android che può riprodurre audio/video e mostrare immagini. Per i video voglio sovrapporre un pulsante di riproduzione sopra l'immagine di anteprima e anche nelle viste elenco .. In questo momento, come sto facendo è con un ImageView in xml, e quindi il drawable è un livello di livello-elenco che Definisco programmaticamente perché una delle immagini è dinamica, ovviamente il pulsante play è statico. Voglio allineare il pulsante di riproduzione 10px dal basso e centrato orizzontalmente.Android - Il modo migliore per sovrapporre un pulsante di riproduzione su un'immagine/miniatura
mio ImageView è definita come questo (in 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 è parte di un modulo in cui l'utente può modificare il titolo e altre informazioni. Poi nella mia attività ora creare l'elenco di layer in questo modo:
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);
Questo funziona solo quando l'orientamento dell'immagine è orizzontale. Ricorda che l'immagine/miniatura è il MINI_KIND che significa che dovrebbe essere 512 x 384 ma sto vedendo che in realtà non è la dimensione .. Sul mio telefono sono 480x800 o 800x480 a seconda dell'orientamento camera era in .. Dato che il mio layout larghezza/altezza è pre-definito voglio solo un modo per mantenere il livello del pulsante di riproduzione dal ridimensionamento del tutto e allinearlo allo stesso modo ogni volta ..
L'altro modo ovvio per fare questo sarebbe di usare un layout relativo (o forse un layout di frame?) ma speravo di evitarlo visto che sto usando lo stesso codice per visualizzare sia immagini che video (entrambi hanno un'anteprima in miniatura dell'immagine - ma solo video dovrebbe avere il pulsante play su di loro).
Qualche idea su come allineare i livelli con un elenco di livelli o alternative che funzionerebbero altrettanto bene o meglio?
Ho fatto questo ma non ho potuto ottenere i clic per registrarmi più nella mia gridview – CQM