Android Projects

Android Development Books

Sunday

How to align a text in Android Programatically?

This is a simple demo on aligning a text in Android. You can check out for more details at the developers site.
This code explains how to write a String or text on a canvas and how to give it a custom font or inbuilt font programatically, change the color of the text or canvas or change the size of the text etc.
Check out this example. You don’t need a layout for this since the view is created in the java code itself.
Now go on and copy the code into your project and you are done.

 package pack.coderzheaven;


import android.app.Activity;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Path;

import android.graphics.Typeface;

import android.os.Bundle;

import android.view.View;


public class TextAlignDemo extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(new SampleView(this));

    }


    private static class SampleView extends View {

        private Paint   mPaint;

        private float   mX;

        private float[] mPos;


        private Path    mPath;

        private Paint   mPathPaint;


        private static final int DY = 30;

        private static final String TEXT_L = "Left";

        private static final String TEXT_C = "Center";

        private static final String TEXT_R = "Right";

        private static final String POSTEXT = "Positioned";

        private static final String TEXTONPATH = "Along a path";


        private static void makePath(Path p) {

            p.moveTo(10, 0);

            p.cubicTo(100, -50, 200, 50, 300, 0);

        }

        private float[] buildTextPositions(String text, float y, Paint paint) {

            float[] widths = new float1;
            // initially get the widths for each char

            int n = paint.getTextWidths(text, widths);

            // now popuplate the array, interleaving spaces for the Y values

            float[] pos = new float[n * 2];

            float accumulatedX = 0;

            for (int i = 0; i < n; i++) {

                pos[i*2 + 0] = accumulatedX;

                pos[i*2 + 1] = y;

                accumulatedX += widths[i];

            }

            return pos;

        }


        public SampleView(Context context) {

            super(context);

            setFocusable(true);


            mPaint = new Paint();

            mPaint.setAntiAlias(true);

            mPaint.setTextSize(30);

            mPaint.setTypeface(Typeface.SERIF);


            mPos = buildTextPositions(POSTEXT, 0, mPaint);


            mPath = new Path();

            makePath(mPath);


            mPathPaint = new Paint();

            mPathPaint.setAntiAlias(true);

            mPathPaint.setColor(0x800000FF);

            mPathPaint.setStyle(Paint.Style.STROKE);

        }


        @Override protected void onDraw(Canvas canvas) {

            canvas.drawColor(Color.WHITE);


            Paint p = mPaint;

            float x = mX;

            float y = 0;

            float[] pos = mPos;


            // draw the normal strings


            p.setColor(0x80FF0000);

            canvas.drawLine(x, y, x, y+DY*3, p);

            p.setColor(Color.BLACK);


            canvas.translate(0, DY);

            p.setTextAlign(Paint.Align.LEFT);

            canvas.drawText(TEXT_L, x, y, p);


            canvas.translate(0, DY);

            p.setTextAlign(Paint.Align.CENTER);

            canvas.drawText(TEXT_C, x, y, p);


            canvas.translate(0, DY);

            p.setTextAlign(Paint.Align.RIGHT);

            canvas.drawText(TEXT_R, x, y, p);


            canvas.translate(100, DY*2);


            // now draw the positioned strings


            p.setColor(0xBB00FF00);

            for (int i = 0; i < pos.length/2; i++) {

                canvas.drawLine(pos[i*2+0], pos[i*2+1]-DY,

                                pos[i*2+0], pos[i*2+1]+DY*2, p);

            }

            p.setColor(Color.BLACK);


            p.setTextAlign(Paint.Align.LEFT);

            canvas.drawPosText(POSTEXT, pos, p);


            canvas.translate(0, DY);

            p.setTextAlign(Paint.Align.CENTER);

            canvas.drawPosText(POSTEXT, pos, p);


            canvas.translate(0, DY);

            p.setTextAlign(Paint.Align.RIGHT);

            canvas.drawPosText(POSTEXT, pos, p);


            // now draw the text on path


            canvas.translate(-100, DY*2);


            canvas.drawPath(mPath, mPathPaint);

            p.setTextAlign(Paint.Align.LEFT);

            canvas.drawTextOnPath(TEXTONPATH, mPath, 0, 0, p);


            canvas.translate(0, DY*1.5f);

            canvas.drawPath(mPath, mPathPaint);

            p.setTextAlign(Paint.Align.CENTER);

            canvas.drawTextOnPath(TEXTONPATH, mPath, 0, 0, p);


            canvas.translate(0, DY*1.5f);

            canvas.drawPath(mPath, mPathPaint);

            p.setTextAlign(Paint.Align.RIGHT);

            canvas.drawTextOnPath(TEXTONPATH, mPath, 0, 0, p);
        }

        @Override
        protected void onSizeChanged(int w, int h, int ow, int oh) {

            super.onSizeChanged(w, h, ow, oh);
            mX = w * 0.5f;  // remember the center of the screen
        }

    }

}
TextAlign Demo
TextAlign Demo
Share this post
  • Share to Facebook
  • Share to Twitter
  • Share to Google+
  • Share to Stumble Upon
  • Share to Evernote
  • Share to Blogger
  • Share to Email
  • Share to Yahoo Messenger
  • More...

0 comments

Thanks for your comment

:) :-) :)) =)) :( :-( :(( :d :-d @-) :p :o :>) (o) [-( :-? (p) :-s (m) 8-) :-t :-b b-( :-# =p~ :-$ (b) (f) x-) (k) (h) (c) cheer

Related Posts Plugin for WordPress, Blogger...
© Google Android Lovers
Designed by BlogThietKe Cooperated with Duy Pham
Released under Creative Commons 3.0 CC BY-NC 3.0