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