Loading core/java/android/transition/TransitionUtils.java +10 −15 Original line number Diff line number Diff line Loading @@ -20,14 +20,13 @@ import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.TypeEvaluator; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Picture; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.view.DisplayListCanvas; import android.view.RenderNode; import android.view.ThreadedRenderer; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; Loading Loading @@ -128,10 +127,8 @@ public class TransitionUtils { } int bitmapWidth = (int) (width * scale); int bitmapHeight = (int) (height * scale); final RenderNode node = RenderNode.create("TransitionUtils", hostView); node.setLeftTopRightBottom(0, 0, width, height); node.setClipToBounds(false); final DisplayListCanvas canvas = node.start(width, height); final Picture picture = new Picture(); final Canvas canvas = picture.beginRecording(width, height); // Do stuff with the canvas Rect existingBounds = drawable.getBounds(); int left = existingBounds.left; Loading @@ -141,8 +138,8 @@ public class TransitionUtils { drawable.setBounds(0, 0, bitmapWidth, bitmapHeight); drawable.draw(canvas); drawable.setBounds(left, top, right, bottom); node.end(canvas); return ThreadedRenderer.createHardwareBitmap(node, width, height); picture.endRecording(); return Bitmap.createBitmap(picture); } /** Loading Loading @@ -183,14 +180,12 @@ public class TransitionUtils { matrix.postTranslate(-bounds.left, -bounds.top); matrix.postScale(scale, scale); final RenderNode node = RenderNode.create("TransitionUtils", view); node.setLeftTopRightBottom(0, 0, bitmapWidth, bitmapHeight); node.setClipToBounds(false); final DisplayListCanvas canvas = node.start(bitmapWidth, bitmapHeight); final Picture picture = new Picture(); final Canvas canvas = picture.beginRecording(bitmapWidth, bitmapHeight); canvas.concat(matrix); view.draw(canvas); node.end(canvas); bitmap = ThreadedRenderer.createHardwareBitmap(node, bitmapWidth, bitmapHeight); picture.endRecording(); bitmap = Bitmap.createBitmap(picture); } if (addToOverlay) { sceneRoot.getOverlay().remove(view); Loading core/java/android/view/ViewDebug.java +6 −15 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Point; import android.graphics.Picture; import android.graphics.Rect; import android.os.Debug; import android.os.Handler; Loading Loading @@ -1782,27 +1782,18 @@ public class ViewDebug { * @hide */ public static class HardwareCanvasProvider implements CanvasProvider { private View mView; private Point mSize; private RenderNode mNode; private DisplayListCanvas mCanvas; private Picture mPicture; @Override public Canvas getCanvas(View view, int width, int height) { mView = view; mSize = new Point(width, height); mNode = RenderNode.create("ViewDebug", mView); mNode.setLeftTopRightBottom(0, 0, width, height); mNode.setClipToBounds(false); mCanvas = mNode.start(width, height); return mCanvas; mPicture = new Picture(); return mPicture.beginRecording(width, height); } @Override public Bitmap createBitmap() { mNode.end(mCanvas); return ThreadedRenderer.createHardwareBitmap(mNode, mSize.x, mSize.y); mPicture.endRecording(); return Bitmap.createBitmap(mPicture); } } Loading packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java +6 −9 Original line number Diff line number Diff line Loading @@ -38,10 +38,12 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Picture; import android.graphics.PixelFormat; import android.graphics.PointF; import android.graphics.Rect; Loading @@ -57,13 +59,10 @@ import android.provider.MediaStore; import android.util.DisplayMetrics; import android.util.Slog; import android.view.Display; import android.view.DisplayListCanvas; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.RenderNode; import android.view.Surface; import android.view.SurfaceControl; import android.view.ThreadedRenderer; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; Loading Loading @@ -233,14 +232,12 @@ class SaveImageInBackgroundTask extends AsyncTask<Void, Void, Void> { */ private Bitmap generateAdjustedHwBitmap(Bitmap bitmap, int width, int height, Matrix matrix, Paint paint, int color) { RenderNode node = RenderNode.create("ScreenshotCanvas", null); node.setLeftTopRightBottom(0, 0, width, height); node.setClipToBounds(false); DisplayListCanvas canvas = node.start(width, height); Picture picture = new Picture(); Canvas canvas = picture.beginRecording(width, height); canvas.drawColor(color); canvas.drawBitmap(bitmap, matrix, paint); node.end(canvas); return ThreadedRenderer.createHardwareBitmap(node, width, height); picture.endRecording(); return Bitmap.createBitmap(picture); } @Override Loading services/core/java/com/android/server/wm/AppTransition.java +7 −11 Original line number Diff line number Diff line Loading @@ -78,9 +78,12 @@ import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.GraphicBuffer; import android.graphics.Path; import android.graphics.Picture; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Binder; Loading @@ -96,11 +99,8 @@ import android.util.Slog; import android.util.SparseArray; import android.util.proto.ProtoOutputStream; import android.view.AppTransitionAnimationSpec; import android.view.DisplayListCanvas; import android.view.IAppTransitionAnimationSpecsFuture; import android.view.RemoteAnimationAdapter; import android.view.RenderNode; import android.view.ThreadedRenderer; import android.view.WindowManager.TransitionFlags; import android.view.WindowManager.TransitionType; import android.view.animation.AlphaAnimation; Loading Loading @@ -973,11 +973,8 @@ public class AppTransition implements Dump { final int width = frame.width(); final int height = frame.height(); final RenderNode node = RenderNode.create("CrossProfileAppsThumbnail", null); node.setLeftTopRightBottom(0, 0, width, height); node.setClipToBounds(false); final DisplayListCanvas canvas = node.start(width, height); final Picture picture = new Picture(); final Canvas canvas = picture.beginRecording(width, height); canvas.drawColor(Color.argb(0.6f, 0, 0, 0)); final int thumbnailSize = mService.mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.cross_profile_apps_thumbnail_size); Loading @@ -988,10 +985,9 @@ public class AppTransition implements Dump { (width + thumbnailSize) / 2, (height + thumbnailSize) / 2); drawable.draw(canvas); node.end(canvas); picture.endRecording(); return ThreadedRenderer.createHardwareBitmap(node, width, height) .createGraphicBufferHandle(); return Bitmap.createBitmap(picture).createGraphicBufferHandle(); } Animation createCrossProfileAppsThumbnailAnimationLocked(Rect appRect) { Loading tests/HwAccelerationTest/src/com/android/test/hwui/DrawIntoHwBitmapActivity.java +5 −6 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.GraphicBuffer; import android.graphics.Paint; import android.graphics.Picture; import android.graphics.PixelFormat; import android.graphics.SurfaceTexture; import android.os.Bundle; Loading @@ -47,10 +48,8 @@ public class DrawIntoHwBitmapActivity extends Activity { } Bitmap createBitmap() { RenderNode node = RenderNode.create("HwuiCanvas", null); node.setLeftTopRightBottom(0, 0, 500, 500); node.setClipToBounds(false); DisplayListCanvas canvas = node.start(500, 500); Picture picture = new Picture(); Canvas canvas = picture.beginRecording(500, 500); Paint p = new Paint(); p.setColor(Color.BLACK); p.setTextSize(20 * getResources().getDisplayMetrics().density); Loading @@ -59,7 +58,7 @@ public class DrawIntoHwBitmapActivity extends Activity { canvas.drawRect(0, 0, 500, 100, p); p.setColor(Color.BLACK); canvas.drawText("Hello, World!", 0, 90, p); node.end(canvas); return ThreadedRenderer.createHardwareBitmap(node, 500, 500); picture.endRecording(); return Bitmap.createBitmap(picture); } } Loading
core/java/android/transition/TransitionUtils.java +10 −15 Original line number Diff line number Diff line Loading @@ -20,14 +20,13 @@ import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.TypeEvaluator; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Picture; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.view.DisplayListCanvas; import android.view.RenderNode; import android.view.ThreadedRenderer; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; Loading Loading @@ -128,10 +127,8 @@ public class TransitionUtils { } int bitmapWidth = (int) (width * scale); int bitmapHeight = (int) (height * scale); final RenderNode node = RenderNode.create("TransitionUtils", hostView); node.setLeftTopRightBottom(0, 0, width, height); node.setClipToBounds(false); final DisplayListCanvas canvas = node.start(width, height); final Picture picture = new Picture(); final Canvas canvas = picture.beginRecording(width, height); // Do stuff with the canvas Rect existingBounds = drawable.getBounds(); int left = existingBounds.left; Loading @@ -141,8 +138,8 @@ public class TransitionUtils { drawable.setBounds(0, 0, bitmapWidth, bitmapHeight); drawable.draw(canvas); drawable.setBounds(left, top, right, bottom); node.end(canvas); return ThreadedRenderer.createHardwareBitmap(node, width, height); picture.endRecording(); return Bitmap.createBitmap(picture); } /** Loading Loading @@ -183,14 +180,12 @@ public class TransitionUtils { matrix.postTranslate(-bounds.left, -bounds.top); matrix.postScale(scale, scale); final RenderNode node = RenderNode.create("TransitionUtils", view); node.setLeftTopRightBottom(0, 0, bitmapWidth, bitmapHeight); node.setClipToBounds(false); final DisplayListCanvas canvas = node.start(bitmapWidth, bitmapHeight); final Picture picture = new Picture(); final Canvas canvas = picture.beginRecording(bitmapWidth, bitmapHeight); canvas.concat(matrix); view.draw(canvas); node.end(canvas); bitmap = ThreadedRenderer.createHardwareBitmap(node, bitmapWidth, bitmapHeight); picture.endRecording(); bitmap = Bitmap.createBitmap(picture); } if (addToOverlay) { sceneRoot.getOverlay().remove(view); Loading
core/java/android/view/ViewDebug.java +6 −15 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Point; import android.graphics.Picture; import android.graphics.Rect; import android.os.Debug; import android.os.Handler; Loading Loading @@ -1782,27 +1782,18 @@ public class ViewDebug { * @hide */ public static class HardwareCanvasProvider implements CanvasProvider { private View mView; private Point mSize; private RenderNode mNode; private DisplayListCanvas mCanvas; private Picture mPicture; @Override public Canvas getCanvas(View view, int width, int height) { mView = view; mSize = new Point(width, height); mNode = RenderNode.create("ViewDebug", mView); mNode.setLeftTopRightBottom(0, 0, width, height); mNode.setClipToBounds(false); mCanvas = mNode.start(width, height); return mCanvas; mPicture = new Picture(); return mPicture.beginRecording(width, height); } @Override public Bitmap createBitmap() { mNode.end(mCanvas); return ThreadedRenderer.createHardwareBitmap(mNode, mSize.x, mSize.y); mPicture.endRecording(); return Bitmap.createBitmap(mPicture); } } Loading
packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java +6 −9 Original line number Diff line number Diff line Loading @@ -38,10 +38,12 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Picture; import android.graphics.PixelFormat; import android.graphics.PointF; import android.graphics.Rect; Loading @@ -57,13 +59,10 @@ import android.provider.MediaStore; import android.util.DisplayMetrics; import android.util.Slog; import android.view.Display; import android.view.DisplayListCanvas; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.RenderNode; import android.view.Surface; import android.view.SurfaceControl; import android.view.ThreadedRenderer; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; Loading Loading @@ -233,14 +232,12 @@ class SaveImageInBackgroundTask extends AsyncTask<Void, Void, Void> { */ private Bitmap generateAdjustedHwBitmap(Bitmap bitmap, int width, int height, Matrix matrix, Paint paint, int color) { RenderNode node = RenderNode.create("ScreenshotCanvas", null); node.setLeftTopRightBottom(0, 0, width, height); node.setClipToBounds(false); DisplayListCanvas canvas = node.start(width, height); Picture picture = new Picture(); Canvas canvas = picture.beginRecording(width, height); canvas.drawColor(color); canvas.drawBitmap(bitmap, matrix, paint); node.end(canvas); return ThreadedRenderer.createHardwareBitmap(node, width, height); picture.endRecording(); return Bitmap.createBitmap(picture); } @Override Loading
services/core/java/com/android/server/wm/AppTransition.java +7 −11 Original line number Diff line number Diff line Loading @@ -78,9 +78,12 @@ import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.GraphicBuffer; import android.graphics.Path; import android.graphics.Picture; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Binder; Loading @@ -96,11 +99,8 @@ import android.util.Slog; import android.util.SparseArray; import android.util.proto.ProtoOutputStream; import android.view.AppTransitionAnimationSpec; import android.view.DisplayListCanvas; import android.view.IAppTransitionAnimationSpecsFuture; import android.view.RemoteAnimationAdapter; import android.view.RenderNode; import android.view.ThreadedRenderer; import android.view.WindowManager.TransitionFlags; import android.view.WindowManager.TransitionType; import android.view.animation.AlphaAnimation; Loading Loading @@ -973,11 +973,8 @@ public class AppTransition implements Dump { final int width = frame.width(); final int height = frame.height(); final RenderNode node = RenderNode.create("CrossProfileAppsThumbnail", null); node.setLeftTopRightBottom(0, 0, width, height); node.setClipToBounds(false); final DisplayListCanvas canvas = node.start(width, height); final Picture picture = new Picture(); final Canvas canvas = picture.beginRecording(width, height); canvas.drawColor(Color.argb(0.6f, 0, 0, 0)); final int thumbnailSize = mService.mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.cross_profile_apps_thumbnail_size); Loading @@ -988,10 +985,9 @@ public class AppTransition implements Dump { (width + thumbnailSize) / 2, (height + thumbnailSize) / 2); drawable.draw(canvas); node.end(canvas); picture.endRecording(); return ThreadedRenderer.createHardwareBitmap(node, width, height) .createGraphicBufferHandle(); return Bitmap.createBitmap(picture).createGraphicBufferHandle(); } Animation createCrossProfileAppsThumbnailAnimationLocked(Rect appRect) { Loading
tests/HwAccelerationTest/src/com/android/test/hwui/DrawIntoHwBitmapActivity.java +5 −6 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.graphics.Canvas; import android.graphics.Color; import android.graphics.GraphicBuffer; import android.graphics.Paint; import android.graphics.Picture; import android.graphics.PixelFormat; import android.graphics.SurfaceTexture; import android.os.Bundle; Loading @@ -47,10 +48,8 @@ public class DrawIntoHwBitmapActivity extends Activity { } Bitmap createBitmap() { RenderNode node = RenderNode.create("HwuiCanvas", null); node.setLeftTopRightBottom(0, 0, 500, 500); node.setClipToBounds(false); DisplayListCanvas canvas = node.start(500, 500); Picture picture = new Picture(); Canvas canvas = picture.beginRecording(500, 500); Paint p = new Paint(); p.setColor(Color.BLACK); p.setTextSize(20 * getResources().getDisplayMetrics().density); Loading @@ -59,7 +58,7 @@ public class DrawIntoHwBitmapActivity extends Activity { canvas.drawRect(0, 0, 500, 100, p); p.setColor(Color.BLACK); canvas.drawText("Hello, World!", 0, 90, p); node.end(canvas); return ThreadedRenderer.createHardwareBitmap(node, 500, 500); picture.endRecording(); return Bitmap.createBitmap(picture); } }