Merge "Manually set vector density when converting to bitmap." into main
diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java
index 715f1be..13b9c45 100644
--- a/core/java/android/view/PointerIcon.java
+++ b/core/java/android/view/PointerIcon.java
@@ -430,6 +430,11 @@
VectorDrawable vectorDrawable) {
Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(),
vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
+ // BitmapDrawables and Bitmap have a default density of DisplayMetrics.DENSITY_DEVICE,
+ // (which is deprecated in favor of DENSITY_DEVICE_STABLE/resources.densityDpi). In
+ // rare cases when device density differs from the resource density, the bitmap will
+ // scale as the BitmapDrawable is created. Avoid by explicitly setting density here.
+ bitmap.setDensity(resources.getDisplayMetrics().densityDpi);
Canvas canvas = new Canvas(bitmap);
vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
vectorDrawable.draw(canvas);