TextureView实现视频界面动态显示红色方框

来源:互联网 发布:网狐手机棋牌游戏源码 编辑:程序博客网 时间:2024/05/17 03:35

上一篇讲过用TextureView实现视频界面的时候,

不能使用SurfaceView的lockCanvas接口直接在视频界面上绘制自己的东西,比如红色方框

今天好好地研究了一下,终于找到好方法解决了,首先我没有使用SurfaceView,

因为我觉得SurfaceView不好用,而且对SurfaceView进行View的一些例如缩放,设置透明度,动画之类的操作有很多问题

但是TextureView又不能像SurfaceView那样使用lockCanvas接口直接在TextureView上绘制东西,

至于为什么TextureView不能,大家可以看我的上篇博客链接1


好了既然SurfaceView效果不好,TextureView又不能用SurfaceView的方法,那只有另想办法了

我的思路是用一个背景透明的自定义View来绘制红色方框覆盖到视频界面上,这样可以达到想要的效果

是的,没错,下面开始码代码:

 <TextureView        android:id="@+id/surfaceview_main"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:tag="0" />    <com.example.ui.ShowRectView        android:id="@+id/id_show_rect"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:visibility="visible" />

遗憾的是,无论我怎么把后面覆盖的ShowRectView背景设置为透明,都不能达到我想要的效果,

始终是ShowRectView一片漆黑挡住了后面的视频界面。

然而当我设置了一下ShowRectView的alpha属性,哪怕是接近1的0.9,

View就变成完全透明,View绘制的红色方框也可以清晰的显示在视频界面上。

最后代码改成:

<TextureView        android:id="@+id/surfaceview_main"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:tag="0" />    <com.example.ui.ShowRectView        android:id="@+id/id_show_rect"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:alpha="0.9"        android:visibility="visible" />

最终效果如图:


最后也问一个问题,

为什么在这里我自己写的自定义View,没有设置alpha属性的时候就是一片漆黑挡住视频界面,而当我设置了alpha属性,哪怕接近于1的0.9,View就完全透明了?

0 0
原创粉丝点击