마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

외부 폰트 적용하는 방법 (전체)

0 추천
구글에서 제공하는 외부폰트를 앱 전체에 적용하려 합니다. (.ttf)

 

소스코드상 일일이 변경하기보단, style 혹은 theme 형식으로 하여 모든 폰트를 일괄적으로 적용시킬 방법은 없을까요? 오래전 어디서 본 듯 도 한데 못찾겠네요.

 

그리고 국가별로도 다른 폰트를 적용이 가능한지.. 궁금합니다.

한국어일때, 영어일때 폰트가 호환이 되야 할 것 같아서요.

 

조언 구합니다.
개발자초심 (21,220 포인트) 님이 2016년 2월 29일 질문
모든 뷰를 한번에 처리하니 3~5초에 달하는 로딩시간과, 뻗어버리는 증상이 발생되네요..

2개의 답변

0 추천
제가 했던 방식은 BaseActivity를 하나 만들어서 그것을 상속받아서 사용했습니다.

Fragment에서 적용하려면 비슷하게 약간 수정해서 만드시면 됩니다.

주의 하실점은 Adapter쪽 TextView는 Typeface를 직접 생성해서 따로 처리하셔야 합니다.

팁으로는 폰트용량이 크면 확장자뒤에 .mp3를 추가해주시면 압축할때 포함하지 않아서 용량을 조금 줄일수 있습니다.

아래 예시 코드를 첨부합니다.

 

public class BaseActivity extends Activity{

     private static Typeface mTypeface;

     public void setContentView(int layoutResID) {

          super.setContentView(layoutResID);    

          if (BaseActivity.mTypeface == null)

               BaseActivity.mTypeface = Typeface.createFromAsset(getAssets(), "fonts/font.ttf.mp3");

 

          ViewGroup root = (ViewGroup) findViewById(android.R.id.content);

          setGlobalFont(root);

     }

 

     void setGlobalFont(ViewGroup root) {

          for (int i = 0; i < root.getChildCount(); i++) {

               View child = root.getChildAt(i);

               if (child instanceof TextView)

               {

                    // 폰트 세팅

                    ((TextView)child).setTypeface(mTypeface);

               }

               else if (child instanceof ViewGroup)

                    setGlobalFont((ViewGroup)child);

          }

     }

}
캬옹이 (37,920 포인트) 님이 2016년 3월 2일 답변
0 추천
typekit이라는 라이브러리 깃헙에서 찾아보시면 있는데요 어플 전체의 기본 글꼴들을 버꾸어줍니다
익명사용자 님이 2016년 3월 2일 답변
...