13d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy/* 23d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * Copyright (C) 2010 The Android Open Source Project 33d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * 43d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 53d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * you may not use this file except in compliance with the License. 63d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * You may obtain a copy of the License at 73d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * 83d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 93d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * 103d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * Unless required by applicable law or agreed to in writing, software 113d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 123d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * See the License for the specific language governing permissions and 143d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy * limitations under the License. 153d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy */ 163d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy 17f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guypackage com.android.test.hwui; 183d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy 193d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guyimport android.app.Activity; 203d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guyimport android.content.Context; 213d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guyimport android.graphics.Canvas; 223d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guyimport android.graphics.Paint; 233d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guyimport android.os.Bundle; 243d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guyimport android.view.View; 253d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy 263d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy@SuppressWarnings({"UnusedDeclaration"}) 273d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guypublic class RotationActivity extends Activity { 283d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy @Override 293d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy protected void onCreate(Bundle savedInstanceState) { 303d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy super.onCreate(savedInstanceState); 313d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy 323d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy DrawingView container = new DrawingView(this); 333d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy 343d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy setContentView(container); 353d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy } 363d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy 373d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy @SuppressWarnings({"UnusedDeclaration"}) 383d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy static int dipToPx(Context c, int dip) { 393d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy return (int) (c.getResources().getDisplayMetrics().density * dip + 0.5f); 403d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy } 413d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy 423d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy static class DrawingView extends View { 433d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy private final Paint mPaint; 443d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy 453d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy DrawingView(Context c) { 463d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy super(c); 473d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy mPaint = new Paint(); 483d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy mPaint.setAntiAlias(true); 493d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy } 503d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy 513d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy @Override 523d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy protected void onDraw(Canvas canvas) { 533d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy canvas.save(); 543d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy canvas.translate(dipToPx(getContext(), 400), dipToPx(getContext(), 200)); 553d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy canvas.rotate(45.0f); 563d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy canvas.drawRGB(255, 255, 255); 573d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy mPaint.setColor(0xffff0000); 583d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy canvas.drawRect(-80.0f, -80.0f, 80.0f, 80.0f, mPaint); 593d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy canvas.drawRect(0.0f, 0.0f, 220.0f, 220.0f, mPaint); 603d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy canvas.restore(); 613d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy } 623d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy } 633d58c03de0d8877b36cdb78b0ca8b5cac7f600e2Romain Guy} 64