ScrollView 内嵌百度地图问题解决

来源:互联网 发布:网络大电影没办法发行 编辑:程序博客网 时间:2024/04/30 02:16

在ScrollView上内嵌百度地图遇到两个问题

  1. 事件冲突,移动地图的时候屏幕滚动了
  2. 移动ScrollView的时候,百度地图出现黑边

问题1的处理就有各种办法了,核心都是拦截事件,我使用的办法是加一个容器,当用户的事件范围是在容器内时,让scrollview不接收事件处理即可。

public class MapScrollContainerView extends FrameLayout {    @Override    public boolean dispatchTouchEvent(MotionEvent ev) {        if (ev.getAction() == MotionEvent.ACTION_DOWN) {            getParent().requestDisallowInterceptTouchEvent(true);        } else if (ev.getAction() == MotionEvent.ACTION_UP) {          getParent().requestDisallowInterceptTouchEvent(false);      }        return super.dispatchTouchEvent(ev);    }    public MapScrollContainerView(Context context) {        super(context);    }    public MapScrollContainerView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MapScrollContainerView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }}

问题2的处理,在百度的更新文档上有

2015年10月20日 百度地图Android SDK v3.6.0发布
9、新增TextureMapView,实现地图由TextureView渲染,解决原MapView基于系统GLSurfaceView导致在TabHost和scrollView中等闪黑屏、白边、压盖等问题(android 4.0以上系统,并开启强制GPU渲染)

将MapView改为TextureMapView,或者将SupportMapFragment改为TextureSupportMapFragment即可。

0 0