1d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy/* 2d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * Copyright (C) 2010 The Android Open Source Project 3d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * 4d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * you may not use this file except in compliance with the License. 6d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * You may obtain a copy of the License at 7d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * 8d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * http://www.apache.org/licenses/LICENSE-2.0 9d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * 10d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * Unless required by applicable law or agreed to in writing, software 11d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * See the License for the specific language governing permissions and 14d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * limitations under the License. 15d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy */ 16d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 17f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guypackage com.android.test.hwui; 18d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 19d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.app.Activity; 20d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.content.Context; 21d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.graphics.Canvas; 22d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.graphics.Paint; 23d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.os.Bundle; 24d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.view.View; 25d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 26d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy@SuppressWarnings({"UnusedDeclaration"}) 27f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guypublic class NewLayersActivity extends Activity { 28d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy @Override 29d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy protected void onCreate(Bundle savedInstanceState) { 30d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy super.onCreate(savedInstanceState); 31d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy setContentView(new LayersView(this)); 32d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy } 33d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 34d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet public static class LayersView extends View { 35d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy private Paint mLayerPaint; 36d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy private final Paint mRectPaint; 37d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 38d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet public LayersView(Context c) { 39d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy super(c); 40d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 41d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy mLayerPaint = new Paint(); 428411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy mLayerPaint.setAlpha(127); 43d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy mRectPaint = new Paint(); 44f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy mRectPaint.setAntiAlias(true); 45f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy mRectPaint.setTextSize(24.0f); 46d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy } 47d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 48d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy @Override 49d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy protected void onDraw(Canvas canvas) { 50d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy super.onDraw(canvas); 51f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy canvas.drawRGB(128, 255, 128); 52d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 538411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy canvas.save(); 54d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 558411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy canvas.translate(140.0f, 100.0f); 568411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy drawStuff(canvas, Canvas.ALL_SAVE_FLAG); 57d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 58f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy canvas.translate(0.0f, 200.0f); 598411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy drawStuff(canvas, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG); 60d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet 618411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy canvas.restore(); 628411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy } 638411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 648411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy private void drawStuff(Canvas canvas, int saveFlags) { 658411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy int count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint, saveFlags); 66d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 67f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy mRectPaint.setColor(0x7fff0000); 68f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy canvas.drawRect(-20.0f, -20.0f, 220.0f, 120.0f, mRectPaint); 69d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy 70f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy mRectPaint.setColor(0xff000000); 71f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy canvas.drawText("This is a very long string to overlap between layers and framebuffer", 72f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy -100.0f, 50.0f, mRectPaint); 738411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy 74d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy canvas.restoreToCount(count); 75d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy } 76d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy } 77d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy} 78