Camera和百度地图在TabActivity里,互相切换导致显示紊乱问题解决

今天遇到一个奇葩问题,一个app的大框架是下面有四个Tab页,于是我用了TabActivity,其中两个tab页分别是扫一扫和百度地图的activity。问题来了,如果点击tab页进到Camera里,扫描正常,但是再点击地图进去,整个地图就显示不出来了。反之先进去百度地图,再进camera,也是同样问题,只有地图在上面盖着,Camera预览在下面显示不出来。

示例如下:

Camera和百度地图在TabActivity里,互相切换导致显示紊乱问题解决_第1张图片

Camera和百度地图在TabActivity里,互相切换导致显示紊乱问题解决_第2张图片

经过咋家分析,原因里Camera使用了Surfaceview作预览载体,Surfaceview具有抢占窗口的特性,他本质上不是一个View。所以可以推测,百度地图的MapView也是类似一种东西,当两个存活在一个TabActivity里,互相切换就会导致上述问题。解决方法有2:

1,是将Camera预览载体换位TexttureView,应该就ok了!

2,不要把Camera和百度地图放在一个Tab里,让其中一个直接由TabActivity启动。此时进到扫描里,就跟TabActivity么关系了,百度地图再怎么切换也互不影响了。

相关代码如下:

case R.id.radiobtn_2:
goToMipcaActivityCapture();
radiobtn_2.setChecked(false);
// this.mHost.setCurrentTabByTag(TAB2);
break;

另外,由于点击扫描,tag没有设下去,要增加一个根据host的tag更新tag icon的函数,在onResume里调用:

private void updateTabIconByTag(){
String currTag = mHost.getCurrentTabTag();
if(currTag.equals(TAB1)){
radiobtn_1.setChecked(true);
}else if(currTag.equals(TAB3)){
radiobtn_3.setChecked(true);
}else if(currTag.equals(TAB4)){
radiobtn_4.setChecked(true);
}
}


时间仓促,就写这么多吧。

你可能感兴趣的:(Camera,百度地图)