본문 바로가기

개발 노트/Kotlin

(96)
[Android/Kotlin] 사용자 위치 얻기 # 위치 접근 권한 사용자의 위치를 추적하기위한 3가지 권한android.permission.ACCESS_COARSE_LOCATION : 와이파이나 모바일 데이터(또는 둘 다)를 사용해 기기의 위치에 접근하는 권한 (도시에서 1블록 정도의 오차 수준)android.permission.ACCESS_FINE_LOCATION : 위성, 와이파이, 모바일 데이터 등 이용할 수 있는 위치 제공자를 사용해 최대한 정확한 위치에 접근하는 권한android.permission.ACCESS_BACKGROUND_LOCATION : 안드로이드 10(API 레벨 29) 이상에서 백그라운드 상태에서 위치에 접근하는 권한  # 권한 설정안드로이드 애플리케이션에서 특정 기능을 사용하기 위해서는 해당 기능에 필요한 권한을 사용자로부..
[Android/Kotlin] Room DataBase 활용 예제 안드로이드에서 앱의 데이터를 저장하는 방법은 여러가지가 있는데그 중 데이터 베이스 프로그래밍을 이용하여 안드로이드 폰에서 DB를 관리하는 오픈소스 SQLite 가 있다 Room DB는 이런 SQLite를 완벽히 활용하면서 원활한 데이터베이스 액세스가 가능하도록 제공한다 Room DB의 이점SQLite를 쉽게 사용할 수 있는 데이터베이스 객체 매핑 라이브러리쉽게 Query를 사용할 수 있는 API를 제공Query를 컴파일 시간에 검증함Query결과를 LiveData로하여 데이터베이스가 변경될 때 마다 쉽게 UI를 변경할 수 있음SQLite 보다 Room을 사용할 것을 권장함    # 예제앱 만들어보기 EditText에 학생에 대한 id와 이름을 입력하고 Add Student버튼을 누르면, Student L..
[Android/Kotlin] SharedPreferences 사용해서 데이터 저장하기 SharedPreferences는 앱에서 데이터를 저장하는 방법중에 하나로, 앱 내부 DB 라 말할 수 있다 예를들어, 로그인을 할 때 앱 재실행 시 최근 로그인 한 아이디를 표시하기 위해 아이디 저장 여부가 필요할 때DB에 저장할 필요가 없이 앱 내부에 저장을 하면 된다. 이때 사용하면 좋은 것이 SharedPreferences 이다 다른 DB와 다르게 SharedPreferences는 간단한 데이터를 저장하기 위해 사용한다. (SharedPreferences에는 큰 값을 저장하거나 많은 값을 저장하면 앱이 느려질 수 있으니 작은 값들을 적게 저장해야한다)또한 앱 내부에 xml 파일로 저장이 되며 데이터와 함께 설정된 keyValue 를 통해 Save/Load 할 수 있다.데이터의 보존은 앱이 삭제되기..
[Android/Kotlin] 멀티뷰타입 리사이클러뷰 MVVM패턴으로 수정(Observer Pattern 사용) https://coding-juuwon2.tistory.com/287 [Android/Kotlin] Multi View Type 리사이클러뷰 구현하기일반적인 리사이클러뷰는 하나의 뷰형태만 보여주고 데이터만 달라지지만,리사이클러뷰 멀티뷰타입을 사용하면 다수의(다른) 뷰형태를 가지는 아이템을 보여줄 수 있다 이런식으로 멀티뷰타coding-juuwon2.tistory.com 이때 만들었던 멀티뷰타입 리사이클러뷰를 MVVM패턴으로 수정해볼것이다근데 아직 LiveData를 쓰지는 않고, Observer Pattern을 사용해서 수정해볼것이다    # 상수정의// enum class로 열거형 클래스로 만들기 (코드 단순, 가독성 up)enum class MultiViewEnum(val viewType : Int) ..
[Android/Kotlin] Multi View Type 리사이클러뷰 구현하기 일반적인 리사이클러뷰는 하나의 뷰형태만 보여주고 데이터만 달라지지만,리사이클러뷰 멀티뷰타입을 사용하면 다수의(다른) 뷰형태를 가지는 아이템을 보여줄 수 있다 이런식으로 멀티뷰타입을 통해서 구현하면 아이템들을 다르게 보여줄 수 있다     # xml먼저 해당 아이템에 들어갈 레이아웃을 각각 디자인해준다   # 상수정의enum class를 사용해서 방금만든 뷰타입의 상수를 정의해준다// enum class로 열거형 클래스로 만들기 (코드 단순, 가독성 up)enum class MultiViewEnum(val viewType : Int) { BlUE(0), LIGHTBLUE(1), ORANGE(2)}   # 데이터들어갈 데이터클래스를 작성..
[Android/Kotlin] Text에 밑줄 표시하기 다양한 방법이 있는데 가장쉬운 방법은 string파일에서 밑줄을 긋고자하는 문자열을 로 감싸주면 된다 매너온도 매너온도라는 문자열에 밑줄이 쳐져있는것을 확인할 수 있다 # 참고자료 https://devuryu.tistory.com/284 [Android] TextView draw Underline - 텍스트 밑줄 긋는 3가지 방법 TextView 에서 밑줄(Underline) 긋는 방법 3가지!!!! TextView 에서 밑줄을 긋기 위해서 검색을해서 (제가)알아낸 3가지 방법입니다. 1. strings.xml 에서 간단하게 HTML Tag 이용하는 방법 Java // strings.xml 작성 I c devuryu.tistory.com https://startuppark.tistory.com/entry..
[Android/Kotlin] 뒤로가기 버튼 클릭이벤트 구현 OnBackPressedCallback() 사용 이전에는 onBackPressed() 메소드를 사용하여 뒤로 가기 버튼이 눌렸을 때의 동작을 정의했지만, 최신 버전(targetSdk 33 : 안드로이드 13 이후)의 안드로이드에서는 onBackPressed()가 deprecated 되었다고 한다 대신에 OnBackPressedCallback 사용하여 뒤로 가기 버튼 동작을 정의할 수 있다. OnBackPressedCallback은 OnBackPressedDispatcher를 통해 등록되고, 뒤로 가기 버튼을 누를 때마다 실행된다. addCallback 메소드는 OnBackPressedDispatcher 에 새로운 OnBackPressedCallback 을 등록하고, 이렇게 등록된 콜백은 handleOnBackPressed 메소드에서 정의된 작업을 수행..
[Android/Kotlin] 천단위로 콤마 표시하기 (DecimalFormat) 1) 숫자 천단위 콤마 DecimalFormat을 사용해서 #,###으로 3자리마다 콤마가 찍히도록 설정해주었다 format 괄호 안에는 적용시킬 데이터를 넣어주면된다 DecimalFormat("#,###").format(123456) // 123,456 2) 숫자 천단위 콤마, 소숫점 00으로 고정 DecimalFormat("#,###.00").format(123456) // 123,456.00 3) 숫자 천단위 콤마, 소숫점 두자리까지만 표시 DecimalFormat("#,###.##").format(123456.1234) // 123,456.12 # 참고자료 https://skogkatt.tistory.com/entry/Kotlin-%EC%BD%94%ED%8B%80%EB%A6%B0-DecimalFo..
[Android/Kotlin] ImageView scaleType 속성 # scaleType = "Center" 이미지의 크기와 비율을 유지하며 이미지의 중앙을 ImageView의 중심에 맞춤 # scaleType = "centerCrop" 이미지의 비율을 유지하며 가로, 세로 중 짧은 쪽을 ImageView에 꽉차게 출력 # scaleType = "centerInside" 이미지의 가로, 세로 중 긴쪽을 imageView의 레이아웃에 맞춰 출력한다. 이미지의 비율을 유지하되며 남은 공간은 background 색으로 채워진다. fitCenter와 달리 이미지가 ImageView보다 작을 경우 크기가 유지됨 # scaleType = "fitCenter" 이미지의 크기가 ImageView보다 작다면 ImageView의 크기에 따라 달라짐 # scaleType = "fitXY" ..
[Android / Kotlin] Intent로 Class 값 넘기기 (Serializable, Parcelable, Parcelize) 일반적으로 intent를 사용해서 넘겨주면 데이터를 하나하나씩 넘겨줘야되기때문에 코드가 길어지고 효율성도 안좋다 그래서 보통 데이터를 클래스형태로 만들어서, 그 클래스를 한방에 넘겨주는 직렬화 방식을 사용한다! 코틀린에서 직렬화를 통해 값을 전달하는 방법은 Serializable, Parcelable, Parcelize 이렇게 3가지가 있다 # Serializable data class Product( val id : Int, @DrawableRes val image : Int, val name : String, val area : String, val price : Int, val comment : Int, var favorate : Int, val description : String, val sel..