關鍵詞:arcgis for android ,截圖,bitmap,sd卡android
參考文章:http://blog.csdn.net/wozaifeiyang0/article/details/7679727緩存
在arcgis for android地圖中mapview加入截圖功能。函數
參考上文,將mapview轉化爲bitmap。代碼以下:ui
1 private Bitmap getViewBitmap(MapView v) { 2 v.clearFocus(); 3 v.setPressed(false); 4 5 //能畫緩存就返回false 6 boolean willNotCache = v.willNotCacheDrawing(); 7 v.setWillNotCacheDrawing(false); 8 int color = v.getDrawingCacheBackgroundColor(); 9 v.setDrawingCacheBackgroundColor(0); 10 if (color != 0) { 11 v.destroyDrawingCache(); 12 } 13 v.buildDrawingCache(); 14 Bitmap cacheBitmap = null; 15 while(cacheBitmap == null){ 16 cacheBitmap = v.getDrawingMapCache(0, 0, v.getWidth(), v.getHeight()); 17 } 18 Bitmap bitmap = Bitmap.createBitmap(cacheBitmap); 19 // Restore the view 20 v.destroyDrawingCache(); 21 v.setWillNotCacheDrawing(willNotCache); 22 v.setDrawingCacheBackgroundColor(color); 23 return bitmap; 24 }
而後處理存儲的文件名以及保存到sd卡,此處採用日期加時間存儲,精確到秒。spa
爲了防止一秒內屢次點擊,文件名被佔用,代碼中加入了處理(雖然出現的機率比較小,但也是可能存在的。。。)。.net
1 private void mapviewshot() { 2 System.out.println("進入截屏方法"); 3 Date date=new Date(); 4 SimpleDateFormat dateformat1=new SimpleDateFormat("yyyyMMdd_hhmmss"); 5 String timeString=dateformat1.format(date); 6 String path="arcgis1/screenshot"; 7 String externalPath=Environment.getExternalStorageDirectory().toString(); 8 String filename=externalPath+"/"+path+"/"+timeString; 9 10 File file_2=new File(externalPath+"/"+path); 11 if (!file_2.exists()){ 12 System.out.println("path 文件夾 不存在--開始建立"); 13 file_2.mkdirs(); 14 } 15 filename=getfilepath(filename);//判斷是否有同一秒內的截圖,有就更名字 16 //存儲於sd卡上 17 System.out.println("得到的filename--"+filename); 18 Bitmap bitmap=getViewBitmap(mMapView); 19 20 File file=new File(filename); 21 try { 22 FileOutputStream fileOutputStream=new FileOutputStream(file); 23 bitmap.compress(Bitmap.CompressFormat.PNG, 90, fileOutputStream); 24 fileOutputStream.flush(); 25 fileOutputStream.close(); 26 } catch (FileNotFoundException e) { 27 e.printStackTrace(); 28 } catch (IOException e) { 29 e.printStackTrace(); 30 } 31 32 33 } 34 private String getfilepath(String filename) { 35 String filestr=filename+".png"; 36 File file=new File(filestr); 37 if (file.exists()){ 38 filename=getfilepath(filename+"_1"); 39 } 40 else { 41 filename=filestr; 42 } 43 System.out.println("getfilename函數返回----"+filename); 44 return filename; 45 }
還能夠處理的是加入命名的對話框,實現自由命名。textview固定文件夾路徑,提供textfield供用戶命名,而後保存。code