Android – 在图片缩图上叠加播放按钮的最佳方式

Android – 在图片缩图上叠加播放按钮的最佳方式,第1张

概述我有一个 Android应用程序,可播放音频/视频和显示图片. 对于视频,我想覆盖预览图像顶部的播放按钮以及列表视图. 现在我正在做的是在xml中使用ImageView,然后drawable是一个图层列表,我以编程方式定义,因为其中一个图像是动态的,播放按钮当然是静态的.我想从底部对齐播放按钮10px,水平居中. 我的ImageView是这样定义的(在xml中) <ImageView 我有一个 Android应用程序,可播放音频/视频和显示图片.
对于视频,我想覆盖预览图像顶部的播放按钮以及列表视图.
现在我正在做的是在xml中使用ImageVIEw,然后drawable是一个图层列表,我以编程方式定义,因为其中一个图像是动态的,播放按钮当然是静态的.我想从底部对齐播放按钮10px,水平居中.

我的ImageVIEw是这样定义的(在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"/>

ImageVIEw是用户可以编辑标题和其他信息的表单的一部分.
然后在我的活动中,我创建了这样的图层列表:

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,bottom);iv.setimageDrawable(layerDrawable);

只有当图像的方向是水平时才有效.
请记住,图像/缩略图是MINI_KIND,这意味着它应该是512 x 384,但我看到它实际上不是大小.在我的手机上,它们是480×800或800×480,具体取决于相机的方向在..
由于我的布局宽度/高度是预先定义的,我只是想要一种方法来保持播放按钮层免受缩放,并按照相同的方式排列.

另一个明显的方法是使用相对布局(或者可能是框架布局?),但是我希望避免使用相同的代码来显示图像和视频(两者都具有图像缩略图预览 – 但只有视频应该有播放按钮).

任何想法如何将图层与图层列表对齐,还是可以使用更好的替代方法?

解决方法 我最终使用了FrameLayout:
<FrameLayout     androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_margin="3dp"    androID:layout_gravity="center_horizontal|center_vertical" ><ImageVIEw     androID:ID="@+ID/MediaPrevIEw"          androID:layout_wIDth="267dp"    androID:layout_height="201dp"    androID:scaleType="centerCrop"    androID:src="@drawable/loading" /><ImageVIEw    androID:ID="@+ID/VIDeoPrevIEwPlaybutton"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:paddingBottom="10dp"    androID:layout_gravity="center_horizontal|bottom"    androID:visibility="gone"    androID:src="@drawable/play_overlay_large" /></FrameLayout>

然后,我将Vis.VISIBLE的可见性设置为视频的预览播放​​按钮,并将其放在照片中.
对于我的列表视图,我使用上面显示的图层列表方法,因为所有的缩略图都是相同的维度.希望这有助于别人!

请注意,ImageVIEw上的layout_gravity与ID VIDeoPrevIEwPlaybutton将其置于水平中心的水平位置,10dp paddingBottom从底部移动一点.

总结

以上是内存溢出为你收集整理的Android – 在图片/缩图上叠加播放按钮的最佳方式全部内容,希望文章能够帮你解决Android – 在图片/缩图上叠加播放按钮的最佳方式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1131308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存