给surfaceview设置默认背景 阿里云播放器背景层问题

Posted 当富网络

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给surfaceview设置默认背景 阿里云播放器背景层问题相关的知识,希望对你有一定的参考价值。


给surfaceview设置默认背景 阿里云播放器背景层问题


如下图那个播放器是个surfacevieww组成的,而要设置刚进来不是透明的,看到刚刚进入的那个activity页面,可以设置如下

 //需要activity背景就设置为true 否则 false
        mSurfaceView.setZOrderOnTop(true);
        //mSurfaceView.setZOrderOnTop(true);
        //this.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
        //mSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
        //不过中间那句是OpenGl的,视情况使用,无用可注释掉了,也能实现了透明,但是GLSurfaceView就必须使用






以下是资料参考和原理解析:

参考资料来源自:http://blog.csdn.net/erone/article/details/46461513


最近搞视频通话,SurfaceView是必不可少的,由于启动视频要加载一些资源,比较耗时,会有1.2s黑屏的现象,为了改善用户体验,我们需要设置Activity的Theme为透明风格(QQ 也是如此),下面是我截取的日志,QQ和我们启动视频通话界面(Activity)所花费的时间:

Displayed com.xxx.xxx/.activity.voip.CallVoipVideoActivity: +491ms:接收视频邀请

Displayed com.xxx.xxxx/.activity.voip.CallVoipVideoActivity: + 1s737ms:发起视频邀请(包括加载视频预览)

Displayed com.tencent.mobileqq/com.tencent.av.ui.AVActivity: + 1s977ms :发起视频邀请(QQ加载的资源更多,故会稍微再慢点,不过差别不大)
查看后台日志,发现一直在GC,当时我以为内存泄露了,电脑卡的要死,Mat了半天。。。
问题来了,经测试发现,在视频预览出现时,经常界面上的按钮可见,但是包含SurfaceView的FrameLayout布局处却是透明的,尽管我在主Activity的根布局设置了默认背景,只要你嵌套了SurfaceView并且SurfaceView未加载进内容,就会出现这种问题。
主Activity的布局如下:
[html]  view plain copy
  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:id="@+id/mainLayout"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:background="@drawable/a" >
  7. <include layout="@layout/test1_item" />
  8. </FrameLayout>
[html]  view plain  copy
  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:id="@+id/mainLayout"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     android:background="@drawable/a" >  
  7.   
  8.     <include layout="@layout/test1_item" />  
  9.   
  10. </FrameLayout>  

其中,a是默认的背景图片,test1_item.xml是包含SurfaceView的子布局,如下:
[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent" >
  5. <FrameLayout
  6. android:id="@+id/testFr"
  7. android:layout_width="match_parent"
  8. android:layout_height="match_parent" >
  9. <SurfaceView
  10. android:layout_width="match_parent"
  11. android:layout_height="match_parent" />
  12. </FrameLayout>
  13. <RelativeLayout
  14. android:layout_width="match_parent"
  15. android:layout_height="match_parent" >
  16. <Button
  17. android:layout_width="wrap_content"
  18. android:layout_height="wrap_content"
  19. android:layout_centerInParent="true"
  20. android:text="挂断" />
  21. </RelativeLayout>
  22. </FrameLayout>
[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" >  
  5.   
  6.     <FrameLayout  
  7.         android:id="@+id/testFr"  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="match_parent" >  
  10.   
  11.         <SurfaceView  
  12.             android:layout_width="match_parent"  
  13.             android:layout_height="match_parent" />  
  14.     </FrameLayout>  

以上是关于给surfaceview设置默认背景 阿里云播放器背景层问题的主要内容,如果未能解决你的问题,请参考以下文章

阿里云 Aliplayer高级功能介绍:多语言

Android12_播放器_surfaceVIew_照相机_传感器

苹果CMS V10 整合阿里云播放器-带记忆播放

苹果CMS V10 整合阿里云播放器-带记忆播放

阿里云配置安全组

阿里云 Aliplayer高级功能介绍:自动播放体验

阿里云 Aliplayer高级功能介绍:自动播放体验

SurfaceView+MediaPlayer播放视频

仿网易云音乐播放器(磁盘转圈背景虚化等等)

使用MediaPlayer和SurfaceView播放视频