From 713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Tue, 16 Oct 2012 18:44:09 -0700 Subject: Add API to enable mipmaps on Bitmap Bug #7353771 This API can be used when scaling large images down to a small size to get nicer looking results. Change-Id: If09087eed36077eee5355f6047a3ca67747d7d9e --- tests/HwAccelerationTest/AndroidManifest.xml | 9 +++ .../res/drawable-nodpi/very_large_photo.jpg | Bin 0 -> 1781694 bytes .../src/com/android/test/hwui/MipMapActivity.java | 77 +++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 tests/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg create mode 100644 tests/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java (limited to 'tests') diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml index 4cb409d..9118aea 100644 --- a/tests/HwAccelerationTest/AndroidManifest.xml +++ b/tests/HwAccelerationTest/AndroidManifest.xml @@ -33,6 +33,15 @@ + + + + + + + diff --git a/tests/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg b/tests/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg new file mode 100644 index 0000000..7f047b1 Binary files /dev/null and b/tests/HwAccelerationTest/res/drawable-nodpi/very_large_photo.jpg differ diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java new file mode 100644 index 0000000..1034649 --- /dev/null +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/MipMapActivity.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2010 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.test.hwui; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.os.Bundle; +import android.util.Log; +import android.view.Gravity; +import android.view.View; +import android.view.animation.Animation; +import android.view.animation.ScaleAnimation; +import android.widget.FrameLayout; + +@SuppressWarnings({"UnusedDeclaration"}) +public class MipMapActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final BitmapsView view = new BitmapsView(this); + setContentView(view); + } + + static class BitmapsView extends View { + private Paint mBitmapPaint; + private final Bitmap mBitmap1; + private final Bitmap mBitmap2; + + BitmapsView(Context c) { + super(c); + + mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.very_large_photo); + mBitmap2 = BitmapFactory.decodeResource(c.getResources(), R.drawable.very_large_photo); + + mBitmap1.setHasMipMap(true); + + mBitmapPaint = new Paint(); + mBitmapPaint.setFilterBitmap(true); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + canvas.save(); + canvas.scale(0.3f, 0.3f); + canvas.drawBitmap(mBitmap1, 0, 0, mBitmapPaint); + canvas.restore(); + + canvas.save(); + canvas.translate(mBitmap1.getWidth() * 0.3f + 96.0f, 0.0f); + canvas.scale(0.3f, 0.3f); + canvas.drawBitmap(mBitmap2, 0, 0, mBitmapPaint); + canvas.restore(); + } + } +} -- cgit v1.1