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); } } }
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) SD 카드에 이미지나 파일 추가하기 (7) | 2010.08.25 |
---|---|
안드로이드 (Android) Bitmap 구현, 관리 하기 (13) | 2010.08.25 |
android 안드로이드에서 문자열을 표현하는 방법 (3) | 2010.08.25 |
(1) 안드로이드 (android) 의 ImageView 레이아웃에 대한 사용법 (6) | 2010.08.25 |
(2) 안드로이드(Android) 의 ImageView 레이아웃 옵션과 사용예제들 - 1 (2) | 2010.08.25 |
(3) 안드로이드(Android) 의 ImageView 레이아웃 옵션과 사용예제들 - 2 (24) | 2010.08.25 |
댓글을 달아 주세요
개발자 2012.01.14 21:47 댓글주소 수정/삭제 댓글쓰기
감사합니다. 많은 도움이 되었어요. ^^
도움이 되었다니 저 또한 기쁘네요..
핑계로 들리겠지만 요즘은 아티클 작성하는게 쉽게 않네요
새해가 되었으니 좀더 분발 해야겠어요
행인 2014.05.19 21:37 댓글주소 수정/삭제 댓글쓰기
근데 문자가 출력안되는건 왜그런거죠?