【Arcgis for android】保存地圖截圖到sd卡

關鍵詞: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

相關文章
相關標籤/搜索