1e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy/* 2e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * Copyright (C) 2010 The Android Open Source Project 3e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * 4e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * you may not use this file except in compliance with the License. 6e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * You may obtain a copy of the License at 7e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * 8e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * http://www.apache.org/licenses/LICENSE-2.0 9e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * 10e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * Unless required by applicable law or agreed to in writing, software 11e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * See the License for the specific language governing permissions and 14e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy * limitations under the License. 15e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy */ 16e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 17e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guypackage com.android.test.hwui; 18e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 19e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.app.Activity; 20e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.content.Context; 21e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.graphics.Bitmap; 22e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.graphics.BitmapFactory; 23e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.graphics.Canvas; 24e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.graphics.Matrix; 25e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.graphics.Paint; 26e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.os.Bundle; 27e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.view.Gravity; 28e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.view.View; 29e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guyimport android.widget.FrameLayout; 30e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 31e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy@SuppressWarnings({"UnusedDeclaration"}) 32e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guypublic class Bitmaps3dActivity extends Activity { 33e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy @Override 34e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy protected void onCreate(Bundle savedInstanceState) { 35e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy super.onCreate(savedInstanceState); 36e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy final BitmapsView view = new BitmapsView(this); 37e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy final FrameLayout layout = new FrameLayout(this); 38e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy layout.addView(view, new FrameLayout.LayoutParams(800, 400, Gravity.CENTER)); 39e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy view.setRotationX(-35.0f); 40e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy setContentView(layout); 41e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy } 42e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 43e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy static class BitmapsView extends View { 44e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy private final Paint mBitmapPaint; 45e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy private final Bitmap mBitmap1; 46e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy private Matrix mMatrix; 47e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 48e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy BitmapsView(Context c) { 49e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy super(c); 50e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 51e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1); 52e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy mBitmapPaint = new Paint(); 53e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 54e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy mMatrix = new Matrix(); 55e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy mMatrix.setScale(2.0f, 2.0f); 56e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy mMatrix.preTranslate(0.0f, -10.0f); 57e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy } 58e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 59e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy @Override 60e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy protected void onDraw(Canvas canvas) { 61e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy super.onDraw(canvas); 62e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 63e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy canvas.drawColor(0xffffffff); 64e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 65e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy canvas.save(); 66e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy canvas.translate(120.0f, 50.0f); 67e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 68e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy canvas.concat(mMatrix); 69e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy canvas.drawBitmap(mBitmap1, 0.0f, 0.0f, mBitmapPaint); 70e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy 71e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy canvas.restore(); 72e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy } 73e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy } 74e5ebcb0107a939395e03592fd44c746cd09e311dRomain Guy} 75