1713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy/* 2713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * Copyright (C) 2010 The Android Open Source Project 3713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * 4713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * you may not use this file except in compliance with the License. 6713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * You may obtain a copy of the License at 7713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * 8713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * 10713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * Unless required by applicable law or agreed to in writing, software 11713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * See the License for the specific language governing permissions and 14713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy * limitations under the License. 15713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy */ 16713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 17713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guypackage com.android.test.hwui; 18713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 19713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.app.Activity; 20713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.content.Context; 21713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.graphics.Bitmap; 22713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.graphics.BitmapFactory; 23713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.graphics.Canvas; 24713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.graphics.Paint; 25713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.graphics.PorterDuff; 26713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.graphics.PorterDuffXfermode; 27713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.os.Bundle; 28713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.util.Log; 29713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.view.Gravity; 30713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.view.View; 31713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.view.animation.Animation; 32713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.view.animation.ScaleAnimation; 33713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guyimport android.widget.FrameLayout; 34713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 35713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy@SuppressWarnings({"UnusedDeclaration"}) 36713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guypublic class MipMapActivity extends Activity { 37713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy @Override 38713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy protected void onCreate(Bundle savedInstanceState) { 39713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy super.onCreate(savedInstanceState); 40713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy final BitmapsView view = new BitmapsView(this); 41713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy setContentView(view); 42713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy } 43713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 44713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy static class BitmapsView extends View { 45713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy private Paint mBitmapPaint; 46713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy private final Bitmap mBitmap1; 47713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy private final Bitmap mBitmap2; 48713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 49713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy BitmapsView(Context c) { 50713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy super(c); 51713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 52713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.very_large_photo); 53713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy mBitmap2 = BitmapFactory.decodeResource(c.getResources(), R.drawable.very_large_photo); 54713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 55713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy mBitmap1.setHasMipMap(true); 56713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 57713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy mBitmapPaint = new Paint(); 58713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy mBitmapPaint.setFilterBitmap(true); 59713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy } 60713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 61713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy @Override 62713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy protected void onDraw(Canvas canvas) { 63713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy super.onDraw(canvas); 64713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 65713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy canvas.save(); 66713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy canvas.scale(0.3f, 0.3f); 67713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy canvas.drawBitmap(mBitmap1, 0, 0, mBitmapPaint); 68713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy canvas.restore(); 69713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy 70713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy canvas.save(); 71713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy canvas.translate(mBitmap1.getWidth() * 0.3f + 96.0f, 0.0f); 72713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy canvas.scale(0.3f, 0.3f); 73713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy canvas.drawBitmap(mBitmap2, 0, 0, mBitmapPaint); 74713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy canvas.restore(); 75713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy } 76713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy } 77713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5Romain Guy} 78