1a4adcf0239039eb8f005be252409901c41b28839Romain Guy/* 2a4adcf0239039eb8f005be252409901c41b28839Romain Guy * Copyright (C) 2010 The Android Open Source Project 3a4adcf0239039eb8f005be252409901c41b28839Romain Guy * 4a4adcf0239039eb8f005be252409901c41b28839Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5a4adcf0239039eb8f005be252409901c41b28839Romain Guy * you may not use this file except in compliance with the License. 6a4adcf0239039eb8f005be252409901c41b28839Romain Guy * You may obtain a copy of the License at 7a4adcf0239039eb8f005be252409901c41b28839Romain Guy * 8a4adcf0239039eb8f005be252409901c41b28839Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9a4adcf0239039eb8f005be252409901c41b28839Romain Guy * 10a4adcf0239039eb8f005be252409901c41b28839Romain Guy * Unless required by applicable law or agreed to in writing, software 11a4adcf0239039eb8f005be252409901c41b28839Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12a4adcf0239039eb8f005be252409901c41b28839Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a4adcf0239039eb8f005be252409901c41b28839Romain Guy * See the License for the specific language governing permissions and 14a4adcf0239039eb8f005be252409901c41b28839Romain Guy * limitations under the License. 15a4adcf0239039eb8f005be252409901c41b28839Romain Guy */ 16a4adcf0239039eb8f005be252409901c41b28839Romain Guy 17a4adcf0239039eb8f005be252409901c41b28839Romain Guypackage com.android.test.hwui; 18a4adcf0239039eb8f005be252409901c41b28839Romain Guy 19a4adcf0239039eb8f005be252409901c41b28839Romain Guyimport android.app.Activity; 20a4adcf0239039eb8f005be252409901c41b28839Romain Guyimport android.content.Context; 21a4adcf0239039eb8f005be252409901c41b28839Romain Guyimport android.graphics.Canvas; 22a4adcf0239039eb8f005be252409901c41b28839Romain Guyimport android.graphics.Paint; 23a4adcf0239039eb8f005be252409901c41b28839Romain Guyimport android.os.Bundle; 24a4adcf0239039eb8f005be252409901c41b28839Romain Guyimport android.view.View; 2519d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guyimport android.widget.FrameLayout; 2619d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guyimport android.widget.LinearLayout; 27a4adcf0239039eb8f005be252409901c41b28839Romain Guy 28a4adcf0239039eb8f005be252409901c41b28839Romain Guy@SuppressWarnings({"UnusedDeclaration"}) 29a4adcf0239039eb8f005be252409901c41b28839Romain Guypublic class Rotate3dTextActivity extends Activity { 30a4adcf0239039eb8f005be252409901c41b28839Romain Guy 31a4adcf0239039eb8f005be252409901c41b28839Romain Guy @Override 32a4adcf0239039eb8f005be252409901c41b28839Romain Guy protected void onCreate(Bundle savedInstanceState) { 33a4adcf0239039eb8f005be252409901c41b28839Romain Guy super.onCreate(savedInstanceState); 34a4adcf0239039eb8f005be252409901c41b28839Romain Guy 3519d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy final LinearLayout layout = new LinearLayout(this); 3619d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy layout.setOrientation(LinearLayout.VERTICAL); 3719d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy 3819d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy Rotate3dTextView view = new Rotate3dTextView(this); 3919d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy layout.addView(view, makeLayoutParams()); 4019d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy 4119d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy view = new Rotate3dTextView(this); 4219d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy 4319d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy FrameLayout container = new FrameLayout(this); 4419d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy container.setLayerType(View.LAYER_TYPE_HARDWARE, null); 4519d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy container.addView(view); 4619d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy 4719d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy layout.addView(container, makeLayoutParams()); 4819d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy 4919d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy setContentView(layout); 5019d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy } 5119d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy 5219d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy private static LinearLayout.LayoutParams makeLayoutParams() { 5319d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( 5419d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy LinearLayout.LayoutParams.MATCH_PARENT, 0); 5519d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy lp.weight = 1.0f; 5619d4dd8599cb870923ab349d2ab96cacffd9c6f5Romain Guy return lp; 57a4adcf0239039eb8f005be252409901c41b28839Romain Guy } 58a4adcf0239039eb8f005be252409901c41b28839Romain Guy 59a4adcf0239039eb8f005be252409901c41b28839Romain Guy public static class Rotate3dTextView extends View { 60a4adcf0239039eb8f005be252409901c41b28839Romain Guy private static final String TEXT = "Hello libhwui! "; 61a4adcf0239039eb8f005be252409901c41b28839Romain Guy 62a4adcf0239039eb8f005be252409901c41b28839Romain Guy private final Paint mPaint; 63a4adcf0239039eb8f005be252409901c41b28839Romain Guy 64a4adcf0239039eb8f005be252409901c41b28839Romain Guy public Rotate3dTextView(Context c) { 65a4adcf0239039eb8f005be252409901c41b28839Romain Guy super(c); 66a4adcf0239039eb8f005be252409901c41b28839Romain Guy 67a4adcf0239039eb8f005be252409901c41b28839Romain Guy mPaint = new Paint(); 68a4adcf0239039eb8f005be252409901c41b28839Romain Guy mPaint.setAntiAlias(true); 69a4adcf0239039eb8f005be252409901c41b28839Romain Guy mPaint.setTextSize(50.0f); 70a4adcf0239039eb8f005be252409901c41b28839Romain Guy mPaint.setTextAlign(Paint.Align.CENTER); 71a4adcf0239039eb8f005be252409901c41b28839Romain Guy 72a4adcf0239039eb8f005be252409901c41b28839Romain Guy setRotationY(45.0f); 73a4adcf0239039eb8f005be252409901c41b28839Romain Guy setScaleX(2.0f); 74a4adcf0239039eb8f005be252409901c41b28839Romain Guy setScaleY(2.0f); 75a4adcf0239039eb8f005be252409901c41b28839Romain Guy } 76a4adcf0239039eb8f005be252409901c41b28839Romain Guy 77a4adcf0239039eb8f005be252409901c41b28839Romain Guy @Override 78a4adcf0239039eb8f005be252409901c41b28839Romain Guy protected void onDraw(Canvas canvas) { 79a4adcf0239039eb8f005be252409901c41b28839Romain Guy canvas.drawText(TEXT, getWidth() / 2.0f, getHeight() / 2.0f, mPaint); 80a4adcf0239039eb8f005be252409901c41b28839Romain Guy } 81a4adcf0239039eb8f005be252409901c41b28839Romain Guy } 82a4adcf0239039eb8f005be252409901c41b28839Romain Guy} 83