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