1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| package com.optimize.performance.webview;
import android.graphics.Bitmap; import android.graphics.Canvas; import android.os.Build; import android.view.View;
import java.util.Arrays;
public class BlankDetect {
public static boolean isBlank(View view) { Bitmap bitmap = getBitmapFromView(view);
if (bitmap == null) { return true; } int width = bitmap.getWidth(); int height = bitmap.getHeight(); if (width > 0 && height > 0) { int originPix = bitmap.getPixel(0, 0); int[] target = new int[width]; Arrays.fill(target, originPix); int[] source = new int[width]; boolean isWhiteScreen = true; for (int col = 0; col < height; col++) { bitmap.getPixels(source, 0, width, 0, col, width, 1); if (!Arrays.equals(target, source)) { isWhiteScreen = false; break; } } return isWhiteScreen; } return false; }
private static Bitmap getBitmapFromView(View view){ Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); if (Build.VERSION.SDK_INT >= 11) { view.measure(View.MeasureSpec.makeMeasureSpec(view.getWidth(), View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(view.getHeight(), View.MeasureSpec.EXACTLY)); view.layout((int) view.getX(), (int) view.getY(), (int) view.getX() + view.getMeasuredWidth(), (int) view.getY() + view.getMeasuredHeight()); } else { view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); } view.draw(canvas); return bitmap; } }
|