android 안드로이드에서 문자열을 표현하는 방법 :: 그래픽[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

그래픽
[1]
등록일:2020-01-03 11:01:15 (0%)
작성자:
제목:android 안드로이드에서 문자열을 표현하는 방법
View 레이아웃을 상속받은 클래스를 하나 만든다. 생성자에서는 어떤 Activity 에서 실행되는지

알기위해 파라미터로 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);
        }
         
    }
}


출처: https://mainia.tistory.com/469?category=251412 [녹두장군 - 상상을 현실로]
[본문링크] android 안드로이드에서 문자열을 표현하는 방법
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34916
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.