728x90
raw 데이터 파일은 raw 폴더에 담으면 스트림을 손쉽게 추출할 수 있다는 장점이 있다.
허나 raw 폴더는 하위 폴더를 만드는 등 계층적으로 관리할 수 없다.
만약 파일들을 계층적인 폴더 구조를 만들어 관리하겠다면 assets 폴더를 사용한다.
assets 폴더는 res 폴더 내부가 아니므로 리소스(R 클래스)로 관리할 수 없다.
assets 폴더에는 다양한 종류의 파일들을 담고 사용할 수 있다.
특히 폰트 파일을 손쉽게 사용할 수 있도록 클래스를 제공하고 있다.
val face = Typeface.createFromAsset(assets, "font/font1.ttf")
textView.typeface = face
package com.example.assets
import android.graphics.Typeface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
import java.io.BufferedReader
import java.io.InputStreamReader
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
val inputStream = assets.open("text/data1.txt")
val isr = InputStreamReader(inputStream, "UTF-8")
val br = BufferedReader(isr)
var str: String? = null
val sb = StringBuffer()
do {
str = br.readLine()
if (str != null) {
sb.append("$str\n")
}
} while (str != null)
br.close()
textView.text = sb.toString()
}
button2.setOnClickListener {
val inputStream = assets.open("text/data2.txt")
val isr = InputStreamReader(inputStream, "UTF-8")
val br = BufferedReader(isr)
var str: String? = null
val sb = StringBuffer()
do {
str = br.readLine()
if (str != null) {
sb.append("$str\n")
}
} while (str != null)
br.close()
textView.text = sb.toString()
}
button3.setOnClickListener {
val face =Typeface.createFromAsset(assets,"font/NotoSerifKR-Bold.otf")
textView.typeface = face
}
}
}
728x90
'안드로이드 > 데이터 입출력' 카테고리의 다른 글
안드로이드 sqlite 2 (0) | 2022.06.23 |
---|---|
안드로이드 sqlite 1 (0) | 2022.06.23 |
안드로이드 파일 입출력 (0) | 2022.06.21 |
안드로이드 Application Class (0) | 2022.06.21 |
안드로이드 코드 View (0) | 2022.06.20 |