slidingMenu 百度地图在Fragment中切换黑边解决方法
来源:互联网 发布:天猫魔盒 淘宝账号 编辑:程序博客网 时间:2024/05/07 17:48
由于android opengl绘制机制的原因,在使用slidingMenu和百度地图在切换的时候会出现黑边的现象,查了百度地图官方也没有找到好的解决办法,于是想到使用截图的方式来解决,大致的步骤如下:
1.slidingMenu打开的时候调用BaiduMap的snapshot方法截图获取Bitmap对象;
2.使用ImageView替换BaiduMap View并显示截取的图片;
3.slidingMenu关闭后再显示BaiduMap VIew。
主要代码:
fragmetn_map.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/image_temp" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone"/> <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /></LinearLayout>
FragmentMap.javapackage 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; }}
MainActivity.java
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); }}
源码下载地址:
http://download.csdn.net/detail/cqrf2006/9086021
0 0
- slidingMenu 百度地图在Fragment中切换黑边解决方法
- slidingMenu 百度地图在Fragment中切换黑边解决方法
- slidingMenu+百度地图 切换黑边解决方法
- SlidingMenu + Fragment百度地图黑边、黑屏
- 解决百度地图+slidingmenu 切换黑边 ,切换Fragment闪黑屏,64位手机侧滑地图错位
- 解决百度地图+slidingmenu 切换黑边 ,切换Fragment闪黑屏,64位手机侧滑地图错位
- 解决 百度地图+slidingmenu 切换Fragment闪黑屏问题
- 百度地图,在fragment中嵌套使用MapView时,切换后出现黑屏
- 在Fragment中使用百度地图
- 在Fragment中集成百度地图
- Fragment切换百度地图,黑屏
- Android开发,Slidingmenu+Fragment框架中,通过menu切换不同Fragment卡顿的解决方法
- 解决百度地图Fragment切换黑屏问题
- 解决百度地图Fragment切换黑屏问题
- fragment中百度地图切换黑屏以及与surfaceview的切换
- 在Fragment中使用百度地图,定位到当前位置
- 百度地图使用slidingmenu在5.0上的bug
- 百度 地图 slidingmenu 黑边 使用截图的方式解决黑边问题,步骤: 1.slidingMenu打开的时候调用BaiduMap的snapshot方法截图获取Bitmap对象; 2.使用
- 移动端前端开发总结(1) 拉勾网前端开发学习
- 微信公众号:搭建新浪SAE服务器,遇到token验证失败的问题
- 生产者消费者模型(Linux系统下的两种实现方法)
- gcc 后 -l 和 -L的区别
- C#学习之抽象类和方法
- slidingMenu 百度地图在Fragment中切换黑边解决方法
- SDP协议分析
- <mvc:annotation-driven/>
- 十大单身狗最需要的APP
- linux--SSH Secure Shell Client
- IOS_UI_TouchView
- Scala开发入门教程
- IMEI/MEID校验位计算
- 解决ListView在ScrollView里只显示单行的问题