给surfaceview设置默认背景 阿里云播放器背景层问题
Posted 当富网络
tags:
篇首语:本文由小常识网(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.tencent.mobileqq/com.tencent.av.ui.AVActivity: + 1s977ms :发起视频邀请(QQ加载的资源更多,故会稍微再慢点,不过差别不大)
查看后台日志,发现一直在GC,当时我以为内存泄露了,电脑卡的要死,Mat了半天。。。
问题来了,经测试发现,在视频预览出现时,经常界面上的按钮可见,但是包含SurfaceView的FrameLayout布局处却是透明的,尽管我在主Activity的根布局设置了默认背景,只要你嵌套了SurfaceView并且SurfaceView未加载进内容,就会出现这种问题。
主Activity的布局如下:
[html] view plain copy
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/mainLayout"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="@drawable/a" >
- <include layout="@layout/test1_item" />
- </FrameLayout>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/mainLayout"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="@drawable/a" >
- <include layout="@layout/test1_item" />
- </FrameLayout>
其中,a是默认的背景图片,test1_item.xml是包含SurfaceView的子布局,如下:
[html] view plain copy
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <FrameLayout
- android:id="@+id/testFr"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <SurfaceView
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- </FrameLayout>
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <Button
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerInParent="true"
- android:text="挂断" />
- </RelativeLayout>
- </FrameLayout>
- <?xml version="1.0" encoding="utf-8"?>
- <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <FrameLayout
- android:id="@+id/testFr"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <SurfaceView
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- </FrameLayout>
- 阿里云 Aliplayer高级功能介绍:多语言