[오늘 배운 내용]
-1- Android Studio String resource 활용
- xml파일에서 text를 입력하는 란에 "텍스트1" 식으로 텍스트를 입력하게 되면 하드코딩이 되었다고 알람이 나온다
- String resource를 통해 작성해야 하는 이유
- 하드코딩을 하게 되면 사후관리가 어려울 수 있다 예를 들면, 특정 상품을 구매하는 어플에서 "구입"을 "구매"로 바꿔 달라는 요청을 받게될 때, "구입" 을 찾아서 바꾸는 방법도 있겠지만 코드가 많은 상황에서는 부담이 될 수 있다. 또 핸드폰 언어설정을 영어로 설정해두고 사용하는 사람의 경우와 타 국가에서 어플을 사용하게 될 경우에도 어려움이 생길 수 있는데 String resource에서 관리함으로써 이 문제를 해결할 수 있다.
- 다국어 지원 기능
- String 값을 설정된 언어에 따라 변경을 일일이 해야 하기에 번거롭지만 사용자의 편의를 위해 다양한 언어를 제공해줌으로써 유용한 기능인 것 같다.
- String.xml 파일안에 <string name=" inputKey ">inputText</string> 형식으로 입력으로 String resource값을 추가할 수 있다.
<string name="toolbar_title" >앱 제목</string>
- 또는 values/strings 우클릭으로 open Translation Editor 에서도 추가할 수 있다.
- 언어를 영문으로 선택해놓았을 시 영문이 출력되도록 String resource에 string.xml(en)을 추가하고 적용해보자
- Translations Editor 내에 English(en)이 추가된 것을 확인할 수 있고 기존에 string.xml 에서 설정해둔 값들도 확인할 수 있다. 추가된 English(en) 하단의 칸이 영어로 언어 설정이 된 기기에서 보여지는 값이니 영문으로 입력해줄 수 있다
- 나는 주로 이용하는 사용자가 한국인이라는 가정으로 디폴트 값을 한국어로 두었다.
- 특정 값의 경우 번역이 필요하지 않는 상황이 생기는데 이때는 Unttranslatable을 체크해주면 되고, 해당 값은 타언어의 값을 입력해주지 않아도 된다.
- Untranslatable에 체크를 하지 않았는데, 언어값에 해당하는 란에 값이 없으면 오류가 나니 별도의 값으로 입력이 필요하지 않다면 반드시 체크해주자.
- Untranslatable을 체크하면 자동으로 xml파일 내부 source 코드에 translatable="false" 가 들어간다.
<resources>
<string name="app_name">PracticeSNS</string>
<string name="say_hello">안녕하세요</string>
<string name="corp_address" translatable="false">제주도</string>
</resources>
- 설정된 언어에 맞게 strings resource를 설정해주는 코드
class TestActivity : AppCompatActivity() {
private lateinit var configuration: Configuration
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_test)
configuration.locale = Locale.US
configuration.locale = Locale.KOREA
resources.updateConfiguration(configuration,resources.displayMetrics)
val intent = baseContext.packageManager.getLaunchIntentForPackage(baseContext.packageName)
intent!!.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
intent!!.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
finish()
startActivity(intent)
}
}
[오늘 복습한 내용]
1. Array
// 배열은 인덱스를 통해 접근할 수 있고, 인덱스는 0부터 시작
// 마지막 원소의 인덱스는 (배열의크기-1) 이다.
// 최초 정해준 저장공간의 크기를 변경할 수 없다.
private fun main() {
val flavor: Array<String> = arrayOf("Watermelon", "Blueberry", "Earlgrey", "Aloe")
println(flavor)
for (index in flavor) {
print("$index ")
}
println()
// 2차원 배열
val data = arrayOf(
arrayOf("밀크티", "타로밀크티"),
arrayOf("아메리카노", "헤이즐넛","콜드브루"),
arrayOf("딸기스무디","망고스무디")
)
// 2차원 배열 원소 접근
for (index in data) {
for (myFavorite in index) {
print("|${myFavorite}|")
}
println()
}
}
// ★★★★★
// 배열의 원소를 출력할 때는 각 원소에 접근하여 출력하여야 한다
[오류,에러 등등]
오늘은 특이사항이 없었다.
[느낀 점]
1. 어렵다
2. 시간관리가 너무 안된다. 다른 짓 하는건 아닌데 배우는 양은 적고, 시간이 너무 금방간다
[Reference]
https://codinghero.tistory.com/106
https://layers7.tistory.com/48
'TIL' 카테고리의 다른 글
[TIL] ViewBinding, you need to use a theme.appcompat theme에러 (2) | 2023.08.22 |
---|---|
[TIL] Android Studio 글꼴변경, UI폰트 설정, edittext 비밀번호 확인 (0) | 2023.08.21 |
[TIL] 0817 람다 (0) | 2023.08.17 |
[TIL] 0816 Enum Class (0) | 2023.08.16 |
[TIL] 20230809 (0) | 2023.08.09 |