1. string.xml 영어 버전 추가
string.xml 파일을 연다.
오른쪽 위 Open editor를 누른다.
지구본 모양을 눌러 en 을 추가한다.
해당하는 string value들을 영문으로 바꾸어 넣는다.
2. 바꾸기
val appLocale = LocaleListCompat.forLanguageTags("ko")
AppCompatDelegate.setApplicationLocales(appLocale)
1. Colors.xml value-night 추가 및 정의하기
2.default dark mod 이용하기
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) // 라이트 모드
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) // 나이트 모드
val configuration= this.resources.configuration
val scale = when(fontSize.name) {
FontSize.Normal.name -> 1.0f
FontSize.Large.name -> 1.2f
else -> throw Exception()
}
configuration.fontScale = scale
//TODO: deprecated 된거 바꾸기
val metrics = DisplayMetrics()
windowManager.defaultDisplay.getMetrics(metrics)
metrics.scaledDensity = configuration.fontScale * metrics.density
baseContext.resources.updateConfiguration(configuration, metrics)
위 코드를 추가해준다.
display metrics를 이용하여 font size를 늘린다.
defaultDisplay
getMetrics(m: DisplayMetrics)
DisplayMetrics.scaledDensity
baseContext.resources.updateConfiguration(
config: Configuration, metrics: DisplayMetrics
)
또한 백스택에 존재하는 activity들에 대해서는 적용이 안되는 것을 발견하였다.
따라서, sharedPreference에 값을 저장하고 앱을 재시작해야 할듯하다. 또는 BaseActivity를 만들고 onResume에 위 코드를 추가하면 될거 같지만... 예쁘지가 않다