Please Enable JavaScript!
Gon[ Enable JavaScript ]

android 안드로이드에서 문자열을 표현하는 방법

안드로이드 개발

android 안드로이드에서 문자열을 표현하는 방법 


View 레이아웃을 상속받은 클래스를 하나 만든다. 생성자에서는 어떤 Activity 에서 실행되는지

알기위해 파라미터로 Context 객체를 받는다. 그리고 그리는 작업은 onDraw 함수에서

수행하게 되는데 override 해서 폰트 관련 기능들을 집어 넣는다.

onDraw 함수내부에서는 Paint, Canvas 객체로 구현되었다. Paint 객체는 글자에 대한 옵션을

셋팅하게 되고 Canvas Paint 객체로 입력받아 화면에 그리는 작업을 한다.

 

measureText 는 파라미터로 전달된 글자의 크기를 숫자로 리턴한다. ascent baseline 위로의

크기이며 descent 는 밑으로의 크기이다. 두개를 합치면 높이가 되는것이다.


// 글자에 대한 옵션셋팅
paint.setTextSize(12);
paint.setColor(0xFF000000);
// Paint 을 화면에 그리기
canvas.drawText("window size :"+getWidth()+"x"+getHeight(), 0, line, paint);
canvas.drawText("blank size :"+(int)paint.measureText("AA"), 0, line * 2, paint);
canvas.drawText("ascent :"+(int)paint.ascent(), 0, line * 3, paint);
canvas.drawText("descent :"+(int)paint.descent(), 0, line * 4, paint);

폰트크기를 에뮬레이터에서 구현해보았다

// 10 dot 의 문자열을 표시
paint.setTextSize(10);
paint.setColor(Color.GRAY);
canvas.drawText("10dot - view", 0, line * 5, paint);

Color 클래스가 지원하는 색상값을 에뮬레이터에 표현해 놓았다.

// GRAY 표현
paint.setColor(Color.GRAY);
canvas.drawText("GRAY", 0, line * 9, paint);

전체소스

위의 내용을 표현한 전체소스는 다음과 같다
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;

public class Main extends Activity {
	
	private LinearLayout mLinearLayout;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new StringView(this));
        
    }
    
    public class StringView extends View{
    	public StringView(Context context){
    		super(context);
    		setBackgroundColor(Color.WHITE);
    	}

		@Override
		protected void onDraw(Canvas canvas) {
			int line = 30;
			// 그리기 개체 발생
			Paint paint = new Paint();
			paint.setAntiAlias(true);
			
			// 화면크기 반자  Ascent Descent
			// 글자에 대한 옵션셋팅
			paint.setTextSize(12);
			paint.setColor(0xFF000000);
			// Paint 을 화면에 그리기
			canvas.drawText("window size :"+getWidth()+"x"+getHeight(), 0, line, paint);
			canvas.drawText("blank size :"+(int)paint.measureText("AA"), 0, line * 2, paint);
			canvas.drawText("ascent :"+(int)paint.ascent(), 0, line * 3, paint);
			canvas.drawText("descent :"+(int)paint.descent(), 0, line * 4, paint);
			
			// 10 dot 의 문자열을 표시
			paint.setTextSize(10);
			paint.setColor(Color.GRAY);
			canvas.drawText("10dot - view", 0, line * 5, paint);
			
			// 12 dot 의 문자열을 표시
			paint.setTextSize(12);
			paint.setColor(0xFF000000);
			canvas.drawText("12dot - view", 0, line * 6, paint);
			
			// 16 dot 의 문자열을 표시
			paint.setTextSize(16);
			paint.setColor(0xFF00FF00);
			canvas.drawText("16dot - view", 0, line * 7, paint);
			
			// 24 dot 의 문자열을 표시
			paint.setTextSize(24);
			paint.setColor(0xFF0000FF);
			canvas.drawText("24dot - view", 0, line * 8, paint);
			
			/** Color 색상에 대한 표현 */
			// GRAY 표현
			paint.setColor(Color.GRAY);
			canvas.drawText("GRAY", 0, line * 9, paint);
			
			// BLUE 표현
			paint.setColor(Color.BLUE);
			canvas.drawText("BLUE", (int)paint.measureText("BLUE") + 10, line * 9, paint);
			
			// CYAN 표현
			paint.setColor(Color.CYAN);
			canvas.drawText("CYAN", 0, line * 10, paint);
			
			// DKGRAY 표현
			paint.setColor(Color.DKGRAY);
			canvas.drawText("DKGRAY", (int)paint.measureText("DKGRAY") + 10, line * 10, paint);
			
			// GREEN 표현
			paint.setColor(Color.GREEN);
			canvas.drawText("GREEN", 0, line * 11, paint);
			
			// LTGRAY 표현
			paint.setColor(Color.LTGRAY);
			canvas.drawText("LTGRAY", (int)paint.measureText("LTGRAY") + 10, line * 11, paint);
			
			// MAGENTA 표현
			paint.setColor(Color.MAGENTA);
			canvas.drawText("MAGENTA", 0, line * 12, paint);
			
			// RED 표현
			paint.setColor(Color.RED);
			canvas.drawText("RED", (int)paint.measureText("MAGENTA") + 10, line * 12, paint);
			
			// YELLOW 표현
			paint.setColor(Color.YELLOW);
			canvas.drawText("YELLOW", 0, line * 13, paint);
			
			super.onDraw(canvas);
		}
    	
    }
}
Posted by 녹두장군

댓글을 달아 주세요

  1. 개발자 2012.01.14 21:47  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 많은 도움이 되었어요. ^^

    • 녹두장군 2012.01.15 09:27  댓글주소  수정/삭제

      도움이 되었다니 저 또한 기쁘네요..
      핑계로 들리겠지만 요즘은 아티클 작성하는게 쉽게 않네요
      새해가 되었으니 좀더 분발 해야겠어요

  2. 행인 2014.05.19 21:37  댓글주소  수정/삭제  댓글쓰기

    근데 문자가 출력안되는건 왜그런거죠?