/** * 把一个View的对象转换成bitmap */ private Bitmap getViewBitmap(MapView v) { v.clearFocus(); v.setPressed(false); //能画缓存就返回false boolean willNotCache = v.willNotCacheDrawing(); v.setWillNotCacheDrawing(false); int color = v.getDrawingCacheBackgroundColor(); v.setDrawingCacheBackgroundColor(0); if (color != 0) { v.destroyDrawingCache(); } v.buildDrawingCache(); Bitmap cacheBitmap = null; while(cacheBitmap == null){ cacheBitmap = v.getDrawingMapCache(0, 0, v.getWidth(), v.getHeight()); } Bitmap bitmap = Bitmap.createBitmap(cacheBitmap); // Restore the view v.destroyDrawingCache(); v.setWillNotCacheDrawing(willNotCache); v.setDrawingCacheBackgroundColor(color); return bitmap; } public void saveMyBitmap(String bitName,Bitmap mBitmap){ String FileName=this.getInnerSDCardPath() + "/" + bitName + ".png"; ShowMessage(FileName); File f = new File(FileName); try { f.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block Log.e("在保存"+FileName+"图片时出错:" + e.toString(),"在保存"+FileName+"图片时出错:" + e.toString()); } FileOutputStream fOut = null; try { fOut = new FileOutputStream(f); } catch (FileNotFoundException e) { e.printStackTrace(); } mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut); try { fOut.flush(); } catch (IOException e) { e.printStackTrace(); } try { fOut.close(); } catch (IOException e) { e.printStackTrace(); } } //缩小 private class ButtonNexitClickListener implements View.OnClickListener { public void onClick(View v) { //ShowMessage("ok1"); Bitmap bitmap=getViewBitmap(mapView); //ShowMessage("ok2"); saveMyBitmap("yl",bitmap); //ShowMessage("ok3"); bitmap.recycle(); ShowMessage("保存成功"); } }