반응형
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)에서 설치한 프로그램 삭제하기 (0) | 2010.08.31 |
---|---|
안드로이드(Android) 기본 프로젝트 생성 (0) | 2010.08.31 |
안드로이드(Android) SD 카드에 이미지나 파일 추가하기 (7) | 2010.08.25 |
안드로이드 (Android) Bitmap 구현, 관리 하기 (13) | 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 |
안드로이드(android) 데이타베이스(DB) sqlite3 다루기 (1) (2) | 2010.08.15 |