본문 바로가기

ANDROID/UI - UX

[안드로이드] 사용자 기기의 글꼴 사이즈에 앱 대응하기

어떤 UI/UX 가이드라인에 맞추어 설계한 앱의 경우에도

 

사용자가 임의로 기기의 폰트 사이즈를 변경하거나, 혹은 크거나 작게 사용하고 있는 경우에는

 

기존의 의도와 다르게 앱의 몇몇 뷰들이 겹치거나 텍스트가 잘려보인다는 등의 현상이 발생하기 마련이다.

 

 

이와 같은 경우, constraintLayout으로 구성되어 있는 레이아웃들을 전부 손봐서

 

기본 폰트 사이즈의 경우 기존 UI/UX 가이드라인에 알맞게 보여지도록 하고, 큰 폰트 사이즈를 사용할 경우

 

잘려나가는 부분이 없도록 최소한의 조정을 하는 방안이 있었는데, 

 

 

몇몇 뷰 요소에 엄격하게 들어가있는 width 값들이 있어 손대기가 조금 난해한 부분이 있었다.

 

그래서 다르게 생각하기로, 기존 가이드라인이 노령 연령대를 고려해 맞추어진 UI/UX라면

(큰 폰트사이즈와 큼직한 버튼이라던지)

 

의도보다 더 큰 사이즈의 폰트를 사용할 때 앱의 폰트사이즈를 조정하게 만들면 어떨까 하는 생각이 들었다.

 

 

 


서두가 길었는데, 이 방법을 사용하기는 간단하다.

 

 

앱의 resources로부터 configuration을 가져와 기기에서 현재 사용중인 폰트 사이즈를 가져올 수 있으며, (float값)

 

새 Configuration을 생성해 fontScale을 원하는 사이즈로 맞추어 setTo(configuration)을 해주면 된다.

 

val Config = Configuration()
config.fontScale = 1.2f // 의도한 폰트 설정값

// 사용자의 기기로부터 폰트 사이즈 설정을 가져옴
if (resources.configuration.fontscale > 1.3f) {
	resources.configuration.setTo(config)
}

 

 

포인트는 뷰를 생성하기 이전에 일찍 적용해야 하는 점.

 

현재 헛점이라면, 적용 이후에 Toast 메시지가 제대로 출력되지 않는다는 점인데

 

여기에 관해서 해결점이 나오면은 포스트를 업데이트 할 생각이다. 

 

 

<참조>

https://stackoverflow.com/questions/16544931/read-font-size-from-settings

 

Read font size from Settings

This question is a almost dublicate of Android App: how to read Font Size under Settings? I read the answer of CommonsWare which points to use Settings.System.FONT_SCALE. So I wrote this few lines:

stackoverflow.com