summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/BitmapHelper.java
diff options
context:
space:
mode:
authorDan Sandler <dsandler@android.com>2014-07-17 16:01:28 -0400
committerAdrian Roos <roosa@google.com>2014-07-18 15:26:48 +0200
commit4d75c079f35d85b687d8349e5e2940447d01198e (patch)
treeb8699675a09245d32b05d5061ec8e90f2141dc5b /packages/SystemUI/src/com/android/systemui/BitmapHelper.java
parent329a85ba903a6d46f332c3db106c3ffb4cef851e (diff)
downloadframeworks_base-4d75c079f35d85b687d8349e5e2940447d01198e.zip
frameworks_base-4d75c079f35d85b687d8349e5e2940447d01198e.tar.gz
frameworks_base-4d75c079f35d85b687d8349e5e2940447d01198e.tar.bz2
Shrink user profile bitmaps to 48dp^2.
Can save megabytes of memory. Bug: 16371371 Change-Id: Ifec5cff3a3376d045ee4e3b605edeb8d9ac93799
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/BitmapHelper.java')
-rw-r--r--packages/SystemUI/src/com/android/systemui/BitmapHelper.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/BitmapHelper.java b/packages/SystemUI/src/com/android/systemui/BitmapHelper.java
new file mode 100644
index 0000000..008b422
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/BitmapHelper.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.systemui;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
+import android.graphics.Canvas;
+import android.graphics.Matrix;
+import android.graphics.Paint;
+import android.graphics.RectF;
+import android.graphics.Shader;
+
+public class BitmapHelper {
+ /**
+ * Generate a new bitmap (width x height pixels, ARGB_8888) with the input bitmap scaled
+ * to fit and clipped to an inscribed circle.
+ * @param input Bitmap to resize and clip
+ * @param width Width of output bitmap (and diameter of circle)
+ * @param height Height of output bitmap
+ * @return A shiny new bitmap for you to use
+ */
+ public static Bitmap createCircularClip(Bitmap input, int width, int height) {
+ final int inWidth = input.getWidth();
+ final int inHeight = input.getHeight();
+ final Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+ final Canvas canvas = new Canvas(output);
+ final Paint paint = new Paint();
+ paint.setShader(new BitmapShader(input, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP));
+ paint.setAntiAlias(true);
+ final RectF srcRect = new RectF(0, 0, inWidth, inHeight);
+ final RectF dstRect = new RectF(0, 0, width, height);
+ final Matrix m = new Matrix();
+ m.setRectToRect(srcRect, dstRect, Matrix.ScaleToFit.CENTER);
+ canvas.setMatrix(m);
+ canvas.drawCircle(inWidth / 2, inHeight / 2, inWidth / 2, paint);
+ return output;
+ }
+}