[Android] 기본, 외부 폰트 적용  +   [Embedded Device/Android]   |  2010.05.03 15:55

출처 : http://nopd.textcube.com/38?expandComment=1

      안드로이드는 기본적으로 몇 가지 글꼴이 포함돼있으며, 원하는 글꼴을 따로 추가할 수 있다.

      1.1 기본 포함 글꼴

           안드로이드는 기본적으로 'sans', 'serif', 'monospace'의 세 가지 글꼴이 내장돼 있다. 세 가지 글꼴 모두 어센터(Ascender)에서 오픈 핸드셋 얼라이언스(Open Handset Alliance)에 제공한 드로이드 글꼴이다.

           - 드로이드 글꼴을 사용하려면 XML 레이아웃 파일에서 해당 글꼴을 바로 참조하면 된다.

 

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
       xmlns:android=" http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:stretchColumns="1">
       <TableRow>
             <TextView
                   android:text="sans:"
                   android:layout_marginRight="4px"
                   android:textSize="20sp"
             />
            <TextView
                  android:id="@+id/sans"
                  android:text="Hello, world!"
                  android:typeface="sans"
                  android:textSize="20sp"
            />
      </TableRow>
      <TableRow>
           <TextView
                 android:text="serif:"
                 android:layout_marginRight="4px"
                 android:textSize="20sp"
            />
           <TextView
                android:id="@+id/serif"
                android:text="Hello, world!"
                android:typeface="serif"
                android:textSize="20sp"
            />
       </TableRow>
       <TableRow>
          <TextView
              android:text="monospace:"
              android:layout_marginRight="4px"
              android:textSize="20sp"
         />
        <TextView
              android:id="@+id/monospace"
              android:text="Hello, world!"
              android:typeface="monospace"
              android:textSize="20sp"
        />
    </TableRow>
    <TableRow>
       <TextView
             android:text="Custom:"
             android:layout_marginRight="4px"
             android:textSize="20sp"
       />
      <TextView
             android:id="@+id/custom"
             android:text="Hello, world!"
             android:textSize="20sp"
      />
   </TableRow>
</TableLayout>

          원하는 외부 글꼴을 사용하는 방법

           - 홈디렉토리에 assets/라는 디렉토리를 생성

           - assets/fonts 등의 디렉토리를 생성하여 관리하는 것이 깔끔

           - 트루타입 글꼴 파일(TTF 파일)을 assets/ 디렉토리에 넣어둔다.

           - 자바코드에서 외부 글꼴 지정하도록 코딩

import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.widget.TextView;

public class FontSampler extends Activity {
      @Override
      public void onCreate(Bundle icicle) {
             super.onCreate(icicle);
             setContentView(R.layout.main);
 
             TextView tv=(TextView)findViewById(R.id.custom);
             Typeface face=Typeface.createFromAsset(getAssets(),
                                                                 "fonts/HandmadeTypewriter.ttf");
 
             tv.setTypeface(face);

      }
}

          예외사항

          - 트루타입 글꼴 가운데에도 간혹 안드로이드가 읽어들일 수 없는 글꼴이 있다. 만약 안드로이드가 읽지 못하는 글꼴을 사용하려 한다면 Exception을 띄우기보다는 그냥 'sans' 글꼴을 대체해서 사용한다.

          - 글꼴을 제대로 적용한 것 같은데 계속해서 'sans' 글꼴로 나타난다면, 이는 안드로이드와 호환되지 않는 글꼴일 가능성도 있다.

          - 투루타입 글꼴은 유니코드 글자 가운데 어느 정도 충분한 양을 표현하려면 파일 크기가 상당히 커진다. 따라서 너무 많은 공간을 차지할 수 있으니 꼭 필요한 글꼴만 추가해 사용하는 것이 좋다.


 
TRACKBACKS 0    COMMENTS 4

 

suspel 2012.06.17 15:44  
안녕하세요?

검색 하다가 들리게 되었습니다^^:

xml 수정으로만 안드로이드에서 기본으로 제공하는 폰트체 말고 커스텀 폰트를 쓸수 있도록 하는 방법을 찾고 있는데요.

혹시 아실것 같아서 이렇게 염치 없지만 질문드려봅니다^^;

정확하게는 systemui.apk 를 디컴파일하여 xml 수정만으로 외부폰트를 지정하고 싶습니다^^;

부디 답변 부탁드립니다..ㅜ
rednine 2012.07.31 10:29 신고  
확인이 늦어 답이 늦었네요 ㅈㅅ^^;;
아래 링크 참조해 보세요 ㅎㅎ

http://rednine.tistory.com/613
null1 2013.06.05 14:12  
저렇게 셋팅하면 나중에 메모리 죽습니다.

Acitivty를 상속받는 baseActvitiy를 하나 만들어서 baseactivity를 상속받으셔야 메몰 관리하실때 편합니다.

 
rednine 2013.06.05 15:27 신고 
좋은 지적 감사합니다.
혹시 이유도 같이 알려주실 수 있으신지요?

비밀글로 저장  
 
 
<<이전   | 1 | ··· | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | ··· | 730 |   다음>>
 

rednine's Blog is powered by Daum & tistory