<FrameLayout
android:id="@+id/frameLayout_map_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
<ImageView
android:id="@+id/imageTemp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:clickable="true" />
slidingMenu+百度地图fragment中切换黑边解决
cqrf20142015-09-07上传
使用截图的方式解决黑边问题,步骤: 1.slidingMenu打开的时候调用BaiduMap的snapshot方法截图获取Bitmap对象; 2.使用ImageView替换BaiduMap View并显示截取的图片; 3.slidingMenu关闭后再显示BaiduMap VIew。
package com.ranfeng.ygty.slidingmeunmap;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationConfiguration;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
/**
* Created by rf on 2015/9/7.
*/
public class FragmentMap extends Fragment {
private View view;
private MapView mMapView = null;
private BaiduMap mBaiduMap = null;
private SlidingMenu slidingMenu;
private ImageView imageTemp;
private Bitmap tempBitmap;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
SDKInitializer.initialize(getActivity().getApplicationContext());
view = inflater.inflate(R.layout.fragmetn_map, container,false);
imageTemp = (ImageView) view.findViewById(R.id.image_temp);
//map相关
mMapView = (MapView) view.findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(MyLocationConfiguration.LocationMode.NORMAL, true, null));
slidingMenu =((MainActivity)getActivity()).getSlidingMenu();
//打开的时候截图并隐藏map
slidingMenu.setOnOpenListener(new SlidingMenu.OnOpenListener() {
@Override
public void onOpen() {
Log.d("map", "slidingMenu is opening");
mBaiduMap.snapshot(new BaiduMap.SnapshotReadyCallback() {
@Override
public void onSnapshotReady(Bitmap bitmap) {
FragmentMap.this.tempBitmap = bitmap;
imageTemp.setImageBitmap(tempBitmap);
imageTemp.setVisibility(View.VISIBLE);
mMapView.setVisibility(View.GONE);
}
});
}
});
//关闭以后再还原回来
slidingMenu.setOnClosedListener(new SlidingMenu.OnClosedListener() {
@Override
public void onClosed() {
Log.d("map","slidingMenu is closed");
if(tempBitmap!=null&&!tempBitmap.isRecycled()) {
tempBitmap.recycle();
tempBitmap = null;
}
imageTemp.setVisibility(View.GONE);
mMapView.setVisibility(View.VISIBLE);
}
});
return view;
}
}
package com.ranfeng.ygty.slidingmeunmap;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
public class MainActivity extends AppCompatActivity {
private FragmentManager fManager;
private Fragment fragmentMap;
private SlidingMenu slidingMenu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fManager = getSupportFragmentManager();
FragmentTransaction transaction = fManager.beginTransaction();
fragmentMap = new FragmentMap();
transaction.add(R.id.content,fragmentMap);
transaction.show(fragmentMap);
transaction.commit();
initSlidingMenu();
}
public void initSlidingMenu(){
// configure the SlidingMenu
slidingMenu = new SlidingMenu(this);
slidingMenu.setMode(SlidingMenu.LEFT);
// 设置触摸屏幕的模式
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN );
slidingMenu.setShadowWidthRes(R.dimen.shadow_width);
//menu.setShadowDrawable(R.drawable.shadow);
// 设置滑动菜单视图的宽度
slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置渐入渐出效果的值
slidingMenu.setFadeDegree(0.35f);
/**
* SLIDING_WINDOW will include the Title/ActionBar in the content
* section of the SlidingMenu, while SLIDING_CONTENT does not.
*/
slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
//为侧滑菜单设置布局
slidingMenu.setMenu(R.layout.layout_menu);
}
public void menuToggle(View v){
slidingMenu.toggle();
}
public SlidingMenu getSlidingMenu(){
return slidingMenu;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}