TextureView實現視頻界面動態顯示紅色方框


上一篇講過用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就完全透明了?


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com