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

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

示例如下:

经过咋家分析,原因里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和百度地图在TabActivity里,互相切换导致显示紊乱问题解

相关文章:

你感兴趣的文章:

标签云: