알기위해 파라미터로 Context 객체를 받는다. 그리고 그리는 작업은 onDraw 함수에서
수행하게 되는데 override 해서 폰트 관련 기능들을 집어 넣는다.
onDraw 함수내부에서는 Paint, Canvas 객체로 구현되었다. Paint 객체는 글자에 대한 옵션을
셋팅하게 되고 Canvas 는 Paint 객체로 입력받아 화면에 그리는 작업을 한다.
measureText 는 파라미터로 전달된 글자의 크기를 숫자로 리턴한다. ascent 는 baseline 위로의
크기이며 descent 는 밑으로의 크기이다. 두개를 합치면 높이가 되는것이다.
1 2 3 4 5 6 7 8 | // 글자에 대한 옵션셋팅 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); |
1 2 3 4 | // 10 dot 의 문자열을 표시 paint.setTextSize(10); paint.setColor(Color.GRAY); canvas.drawText( "10dot - view" , 0, line * 5, paint); |
Color 클래스가 지원하는 색상값을 에뮬레이터에 표현해 놓았다.
1 2 3 | // GRAY 표현 paint.setColor(Color.GRAY); canvas.drawText( "GRAY" , 0, line * 9, paint); |
전체소스 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | 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); } } } |
SSISO Community