출처 - http://gun0912.tistory.com/10
커스텀폰트를 사용하면 강제적으로 사용자가 사용중인 폰트를 무시하고 지정한 폰트로 변경하기때문에 이를 불편해하는 사용자도 있습니다.
(설정화면에서 [커스텀폰트], [자신의 폰트] 를 선택할수 있도록 제공해주는게 좋습니다.)
커스텀 폰트를 구현하는 방법은 조금만 찾아봐도 수많은 방법이 존재합니다.
물론 Custom font와 관련된 라이브러리들도 많이 있습니다.
대부분은 CustomFont의 View를 xml에 선언해서 사용하는 방식을 사용합니다.
지금 만들어둔 TextView나 기타 View를 모두 해당 View로 변경해서 xml에 바꾸려면 상당히 귀찮습니다 번거롭습니다
만약 더 좋은 CustomFont 라이브러리가 나와서 변경하고자할때는 그 노가다작업이 더 하기 싫어질겁니다.
그래서 기존에 사용하는 xml들은 그대로 놔두고 간단히 코드 몇줄만으로 전체 앱에 커스텀 폰트를 적용할수 있는 라이브러리들을 찾아보았습니다.
그중에서 가장 대표적인 라이브러리는 Calligraphy 입니다.
Application 클래스에서 폰트경로를 지정해주고 Activity에서 코드 한줄만 추가해주면 끝! 이기 때문이죠
물론 xml에서 폰트경로를 지정해서 넣어주는 방법도 사용할수 있습니다.
하지만 Calligraphy에서는 Normal,Bold,Italic 등에대해서 세부적으로 폰트 경로를 각각 지정해줄수 없었습니다.
(xml에 넣는 방식으로는 가능하지만 그 또한 귀찮 번거로운 방식입니다)
그래서 제가 사용한 커스텀 폰트 라이브러리는 typekit 입니다.
사용 방법
(Gradle추가)
compile 'com.tsengvn:Typekit:1.0.0'
1. Application 클래스에서 설정하고자하는 폰트들의 경로를 적어줍니다
Typekit.getInstance()
.addNormal(Typekit.createFromAsset(this, "fonts/NanumBarunGothic-Regular.otf"))
.addBold(Typekit.createFromAsset(this, "fonts/NanumBarunGothic-Bold.otf"));
여기서는 Normal: 나눔고딕-Regular.otf , Bold: 나눔고딕-Bold.otf 를 적용시켰습니다.
2. Activity의 attachBaseContext 함수에 아래와 같이 선언해줍니다
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(TypekitContextWrapper.wrap(newBase));
}
각 Activity마다 @Override해서 선언해줄필요 없습니다.
BaseActivity를 만든뒤 모든 Activity가 BaseActivity를 상속받아서 사용하면 위의 코드는 BaeActivity에 한번만 선언해주면 됩니다.
단 2줄의 코딩으로 원하는 커스텀 폰트로의 설정이 끝났습니다.
어때요? 참 쉽죠?
'개발 > 안드로이드' 카테고리의 다른 글
Direct Boot용으로 개발하기 (0) | 2016.06.04 |
---|---|
하단 소프트웨어 메뉴키 여부 체크 (0) | 2016.06.03 |
페이스북(Facebook) 로그인 연동 with 안드로이드 스튜디오 (1) | 2016.06.02 |
안드로이드 스튜디오 debug/sign key 만들기 (0) | 2016.05.31 |
Android In-App(인앱) Billing 보안 완벽 정리 (0) | 2016.05.27 |
댓글