ScrollView 内嵌百度地图问题解决

在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即可。

posted @ 2016-10-20 11:10  小小架构师  阅读(647)  评论(0编辑  收藏  举报