如何給Scrollview裡內容截圖並生成bitmap,注意:Scrollview裡面內容較多有滾動了·

yangxi_001發表於2014-07-02

如何對Scrollview進行截圖,這種需求一般是作為分享截圖時需要的·,查了很多方法,開始是和我前面寫的對webview截圖的方法做參考,後來發現完全不合要求,畢竟Scrollview是佈局不是View控制元件。

          廢話不多說,見核心部分:主要是計算當前scrollview的總高度,超過手機螢幕的高度了。

使用for迴圈遞迴累加其內部的子控制元件的高度:

[java] view plaincopy
  1. private ScrollView scrollView;  
  2. scrollView = (ScrollView) findViewById(R.id.scrollview);  
  3. int h = 0;  
  4. for (int i = 0; i < scrollView.getChildCount(); i++) {  
  5. h += scrollView.getChildAt(i).getHeight();}  
  6. Bitmap bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,  
  7.                     Bitmap.Config.ARGB_8888);  
  8.             // Bitmap bitmap = scrollView.getDrawingCache(true);  
  9.             final Canvas c = new Canvas(bitmap);  
  10.           
  11.             scrollView.draw(c);  
  12.   
  13.             ByteArrayOutputStream stream = new ByteArrayOutputStream();  
  14.             bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);  
  15.             final byte[] picture = stream.toByteArray();  
  16. if (bitmap != null && !bitmap.isRecycled()) {  
  17. bitmap = null;// 把原來的 bitmap.recycle().改成這個  
  18.             }  

程式碼如上即可給Scrollview進行截圖並轉換為bitmap,和byte[]陣列,你可以根據自己需要選擇使用·········

相關文章