高德地图与VideoView冲突
在高德地图的基础上使用VideoView播放视频的时候,可以看到视频画面闪了一下之后就消失了。但声音还是在的,就是没有画面。效果如下。
文章图片
界面布局很简单,就一个map和一个VideoView。
Activity中代码:
public class MainActivity extends Activity {
private MapView mMapView;
private AMap aMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.map);
//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
mMapView.onCreate(savedInstanceState);
if (aMap == null) {
aMap = mMapView.getMap();
}
//移动中心点到西安
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(34.341568, 108.940174), 10));
VideoView videoView = (VideoView) findViewById(R.id.vv_videoview);
//设置路径
videoView.setVideoPath("/storage/emulated/0/video.mp4");
//设置视频控制器
videoView.setMediaController(new MediaController(this));
//播放完成回调
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Toast.makeText(getApplicationContext(),"end",Toast.LENGTH_SHORT).show();
}
});
//开始播放视频
videoView.start();
}@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
mMapView.onDestroy();
}@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
mMapView.onResume();
}@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
mMapView.onPause();
}@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),
//保存地图当前的状态
mMapView.onSaveInstanceState(outState);
}}
出现这种效果的原因是由于视频播放的SurfaceView与MapView的GLSurfaceView冲突,发生了重叠现象。解决办法:VideoView是继承于SurfaceView的,SurfaceView中有个方法是将当前view一直置于最上边,不被其他view覆盖。所以只需要给VideoView设置setZOrderMediaOverlay(true)即可。
官方Api介绍如下:
【高德地图与VideoView冲突】
文章图片
添加代码。
videoView.setZOrderMediaOverlay(true);
重新运行效果如下,VideoView没有被覆盖,完美展示。
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 第326天
- Shell-Bash变量与运算符
- 逻辑回归的理解与python示例
- Guava|Guava RateLimiter与限流算法
- 我和你之前距离
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 拿着旧地图,找不到新大陆