162b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy/*
262b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy * Copyright (C) 2010 The Android Open Source Project
362b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy *
462b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy * Licensed under the Apache License, Version 2.0 (the "License");
562b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy * you may not use this file except in compliance with the License.
662b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy * You may obtain a copy of the License at
762b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy *
862b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy *      http://www.apache.org/licenses/LICENSE-2.0
962b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy *
1062b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy * Unless required by applicable law or agreed to in writing, software
1162b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy * distributed under the License is distributed on an "AS IS" BASIS,
1262b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1362b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy * See the License for the specific language governing permissions and
1462b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy * limitations under the License.
1562b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy */
1662b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
1762b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guypackage com.android.test.hwui;
1862b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
1962b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guyimport android.app.Activity;
2062b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guyimport android.content.Context;
2162b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guyimport android.graphics.Canvas;
2262b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guyimport android.graphics.Paint;
2362b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guyimport android.os.Bundle;
2462b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guyimport android.view.View;
2562b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
2662b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy@SuppressWarnings({"UnusedDeclaration"})
2762b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guypublic class PosTextActivity extends Activity {
2862b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy    @Override
2962b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy    protected void onCreate(Bundle savedInstanceState) {
3062b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        super.onCreate(savedInstanceState);
3162b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
3262b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        setContentView(new CustomTextView(this));
3362b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy    }
3462b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
3562b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy    static class CustomTextView extends View {
3662b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        private final Paint mLargePaint;
3762b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        private final String mText;
3862b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        private final float[] mPos;
3962b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
4062b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        CustomTextView(Context c) {
4162b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            super(c);
4262b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
4362b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            mText = c.getResources().getString(R.string.complex_string);
4462b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            mPos = new float[mText.length() * 2];
4562b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            for (int i = 0; i < mPos.length; i += 2) {
4662b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy                mPos[i] = i * 30.0f;
4762b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy                mPos[i + 1] = i * 10.0f;
4862b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            }
4962b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
5062b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            mLargePaint = new Paint();
5162b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            mLargePaint.setAntiAlias(true);
5262b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            mLargePaint.setTextSize(36.0f);
5362b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        }
5462b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
5562b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        @Override
5662b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        protected void onDraw(Canvas canvas) {
5762b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            super.onDraw(canvas);
5862b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            canvas.drawRGB(255, 255, 255);
5962b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy
6062b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            canvas.save();
61671d6cf460531825a321edb200523d0faa7792c9Romain Guy
62671d6cf460531825a321edb200523d0faa7792c9Romain Guy            canvas.drawLine(100.0f, 0.0f, 100.0f, getHeight(), mLargePaint);
63671d6cf460531825a321edb200523d0faa7792c9Romain Guy
6462b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            canvas.translate(100.0f, 100.0f);
65671d6cf460531825a321edb200523d0faa7792c9Romain Guy            mLargePaint.setTextAlign(Paint.Align.LEFT);
66671d6cf460531825a321edb200523d0faa7792c9Romain Guy            canvas.drawPosText(mText, mPos, mLargePaint);
67671d6cf460531825a321edb200523d0faa7792c9Romain Guy
68671d6cf460531825a321edb200523d0faa7792c9Romain Guy            canvas.translate(0.0f, 50.0f);
69671d6cf460531825a321edb200523d0faa7792c9Romain Guy            mLargePaint.setTextAlign(Paint.Align.CENTER);
7062b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            canvas.drawPosText(mText, mPos, mLargePaint);
71671d6cf460531825a321edb200523d0faa7792c9Romain Guy
72671d6cf460531825a321edb200523d0faa7792c9Romain Guy            canvas.translate(0.0f, 50.0f);
73671d6cf460531825a321edb200523d0faa7792c9Romain Guy            mLargePaint.setTextAlign(Paint.Align.RIGHT);
74671d6cf460531825a321edb200523d0faa7792c9Romain Guy            canvas.drawPosText(mText, mPos, mLargePaint);
75671d6cf460531825a321edb200523d0faa7792c9Romain Guy
7662b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy            canvas.restore();
7762b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy        }
7862b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy    }
7962b6eaa7f3a8111311a7ee097f278eb55865a499Romain Guy}
80