1. 程式人生 > >Android 截圖

Android 截圖

二、具體實現方式

1),第一種實現方式

  1. /**

  2. * 對View進行量測,佈局後截圖

  3. *

  4. * @param view

  5. * @return

  6. */

  7. public Bitmap convertViewToBitmap(View view) {

  8. view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));

  9. view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());

  10. view.setDrawingCacheEnabled(true);

  11. view.buildDrawingCache();

  12. Bitmap bitmap = view.getDrawingCache();

  13. return bitmap;

  14. }

此種實現方式,基本可以實現所有View的截圖及全螢幕的截圖。

在實際的需求中,是對WebView進行截圖,且WebView的展示中,是使用繪製程式繪製部分內容。這種方式,繪製的內容截圖展示不出來,只能另尋他法。

2)第二種實現方式

  1. /**

  2. * 獲取整個視窗的截圖

  3. *

  4. * @param context

  5. * @return

  6. */

  7. @SuppressLint("NewApi")

  8. private Bitmap captureScreen(Activity context) {

  9. View cv = context.getWindow().getDecorView();

  10. cv.setDrawingCacheEnabled(true);

  11. cv.buildDrawingCache();

  12. Bitmap bmp = cv.getDrawingCache();

  13. if (bmp == null) {

  14. return null;

  15. }

  16. bmp.setHasAlpha(false);

  17. bmp.prepareToDraw();

  18. return bmp;

  19. }

3),第三種實現方式【實質是將view作為原圖繪製出來】

  1. /**

  2. * 對單獨某個View進行截圖

  3. *

  4. * @param v

  5. * @return

  6. */

  7. private Bitmap loadBitmapFromView(View v) {

  8. if (v == null) {

  9. return null;

  10. }

  11. Bitmap screenshot;

  12. screenshot = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565);

  13. Canvas c = new Canvas(screenshot);

  14. c.translate(-v.getScrollX(), -v.getScrollY());

  15. v.draw(c);

  16. return screenshot;

  17. }

4),第四種實現方式【針對WebView的實現方式】

  1. /**

  2. * 對WebView進行截圖

  3. *

  4. * @param webView

  5. * @return

  6. */

  7. public static Bitmap captureWebView1(WebView webView) {//可執行

  8. Picture snapShot = webView.capturePicture();

  9. Bitmap bmp = Bitmap.createBitmap(snapShot.getWidth(),

  10. snapShot.getHeight(), Bitmap.Config.ARGB_8888);

  11. Canvas canvas = new Canvas(bmp);

  12. snapShot.draw(canvas);

  13. return bmp;

  14. }