private float getOverDrawCounter(){ Class<?> view= null; try { view = Class.forName("android.view.View"); Method getHardwareRender=view.getDeclaredMethod("getHardwareRenderer"); getHardwareRender.setAccessible(true); Object gl20Renderer=getHardwareRender.invoke(getWindow().getDecorView().getRootView()); if(null!=gl20Renderer){ Field debugOverdrawLayoutField=gl20Renderer.getClass().getSuperclass().getDeclaredField("mDebugOverdrawLayer"); debugOverdrawLayoutField.setAccessible(true); Object GLES20RenderLayout=debugOverdrawLayoutField.get(gl20Renderer); if(null!=GLES20RenderLayout){ Method getCanvasMethod=GLES20RenderLayout.getClass().getSuperclass().getSuperclass().getDeclaredMethod("getCanvas"); getCanvasMethod.setAccessible(true); Object gles20Canvas=getCanvasMethod.invoke(GLES20RenderLayout); if(null!=gles20Canvas){ Method getOverdrawMethod=gles20Canvas.getClass().getDeclaredMethod("getOverdraw"); getOverdrawMethod.setAccessible(true); Object o =getOverdrawMethod.invoke(gles20Canvas); if(null!=o){ return (float)o; } } } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } return 0f; }
转载于:https://my.oschina.net/fengcunhan/blog/1529926