IT/안드로이드+JAVA

[안드로이드] 외부 글꼴 설정하기, 모든 액티비티에 글꼴 설정하기

안경 쓴 귀니 2016. 8. 30. 17:55
반응형



[안드로이드] 외부 글꼴 설정하기, 모든 액티비티에 글꼴 설정하기




1번째 방법


[ 출처 : https://blog.wonhada.com/?p=2001 ]


안드로이드 코드 스니펫(Snippets) :: https://blog.wonhada.com/?p=1990

안드로이드 앱에 커스텀 폰트(Custom Fonts)를 적용하는 방법입니다.

1. app/build.gradle의 dependencies에 추가

1
compile 'com.tsengvn:Typekit:1.0.0'

2. 프로젝트폴더\app\src\main\assets에 폰트 파일 추가 (fonts 폴더 만들어서 넣어도 됨)
3. 패키지 루트(MainActivity.java가 있는)에 아래와 같이 CustomStartApp.java 파일 생성
– addNormal, addBold 등은 해당 스타일에 기본적으로 적용되는 것들이고, addCustom1 ~ 9는 레이아웃 xml에서 이용할 수 있는 것들이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package 패키지;

import android.app.Application;

import com.tsengvn.typekit.Typekit;

/**
 * Created by WonHada.com on 2016-04-20.
 */

public class CustomStartApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        Typekit.getInstance()
                .addNormal(Typekit.createFromAsset(this"폰트.ttf"))
                .addBold(Typekit.createFromAsset(this"폰트2.ttf"))
                .addCustom1(Typekit.createFromAsset(this"폰트3.ttf"));// "fonts/폰트.ttf"
    }
}

4. AndroidManifest.xml의 application 노드에 아래와 같이 추가

1
2
<application
       android:name=".CustomStartApp"

5. 액티비티마다 아래 코드 추가 (부모 액티비티 하나 만들어서 상속받으면 편함)

1
2
3
4
@Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(TypekitContextWrapper.wrap(newBase));
}

6. 레이아웃 XML에 Custom1 ~ 9 적용할 경우

1
2
3
4
5
// 루트 노드에 추가
xmlns:app="http://schemas.android.com/apk/res-auto"

// 뷰에 추가
app:font="custom1"

출처: https://github.com/tsengvn/typekit






2번째 방법


[ 출처 :  http://thegreedyman.tistory.com/21 ]


assets폴더에 폰트 파일을 넣어주세요.



또한 Util클래스에 아래의 메소드를 생성 후...

 

public static void setGlobalFont(Context context,View view){
if (view != null) {
if (view instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) view;
int len = vg.getChildCount();
for (int i = 0; i < len; i++) {
View v = vg.getChildAt(i);
if (v instanceof TextView) {
((TextView) v).setTypeface(Typeface.createFromAsset(context.getAssets(), "Roboto-Regular.ttf"));
}
setGlobalFont(context, v);
}
}
} else {
L.m("This is null);
}

}

 

Activity에서 아래와 같이 호출해주면 해당 Activity안의 모든 텍스트뷰에 해당 폰트가 적용된다.

 

;



첫번째 방법이 효율적이다. 2번째 방법은 느리다.


반응형