분류 전체보기

안드로이드/활용

[Android] addView와 ListView

addView addView는 지정한 Layout에 동적으로 View를 추가할 수 있는 메서드입니다. 여기서 addView를 사용하는 방법에는 두 가지가 있습니다. 코드 상에서 View를 만들어 레이아웃에 추가하는 방식 리스트뷰의 아이템을 담을 xml을 직접 만들어 추가하는 방식 1. 리스트뷰를 담을 container 생성 addView 방식은 자동으로 스크롤이 추가되지 않기 때문에 container를 ScrollView로 감싸주어야 합니다. 2-1. 코드 상에서 View를 만들어 레이아웃에 추가하는 방식 직접 TextView를 코드로 짜서 addView를 통해 레이아웃에 추가합니다. val container = binding.linearLayout TextView(this).apply { textSiz..

안드로이드/활용

[Android] Room 사용하기

Room 추가하기 Room을 사용하기 위해서 build.gradle에 Room 라이브러리를 추가합니다. plugins { id 'kotlin-android' id 'kotlin-kapt' } dependencies { val room_version = "2.5.0" implementation 'androidx.room:room-runtime:$room_version' kapt 'androidx.room:room-compiler:$room_version' } Room 구성요소 Database 데이터베이스 구성을 정의하고 영구 데이터에 대한 앱의 기본 액세스 포인트 역할을 수행합니다. Database 어노테이션을 사용하고 어노테이션 내에 entities을 포함해야 합니다. RoomDatabase()를 확장하..

안드로이드/활용

[Android] SQLite 사용하기

SQLiteOpenHelper 클래스 생성 SQLiteOpenHelper는 SQLite에 접근하는 클래스로, SQL 명령어를 실행하고 DB를 관리하는 메소드를 가지고 있습니다. SQLiteOpenHelper를 상속받게 되면 다음의 3가지를 구현해 주어야 합니다. constructor : DB name과 DB version 명시 onCreate : DB 생성 onUpgrade : 생성한 DB의 version이 올라 수정이 필요한 경우 class SQLiteHelper(context: Context, name: String, version: Int) : SQLiteOpenHelper(context, name, null, version) { public static final String TABLE_NAME ..

안드로이드/활용

[Android] 로컬 데이터베이스에 데이터 저장

SharedPreferences SharedPreferences는 primitive data(String, int, float, Boolean)를 Key-Value 형태로 앱 안에 XML 파일로 저장하는 방식입니다. 사용자 설정을 저장하거나 앱 내에서 다양한 활동에 사용할 수 있는 데이터를 저장해야 할 때 사용할 수 있습니다. SharedPreferences는 소량의 데이터를 저장할 때 사용하는데 SavedInstanceState도 액티비티에서 데이터를 저장하는데 자주 사용합니다. SharedPreferences는 세션과 관계없이 영속적으로 보관해야 하는 데이터가 있을 때 사용하고, SavedInstanceState는 유저의 세선 내에서 액티비티의 인스턴스를 저장하는 데 사용합니다. SQLite SQLi..

안드로이드/개념

[Android] Serializable vs Parcelable

Serializable Serializable은 Java에서 제공하는 인터페이스로, 객체를 직렬화하여 전달하기 위해 사용됩니다. Serializable을 사용하면 객체를 바이트 스트림으로 변환하여 전달합니다. Serializable 인터페이스를 구현한 객체는 Java에서 제공하는 ObjectOutputStream을 사용하여 전달됩니다. Serializable을 사용하면 Serializable 선언 외에 추가하는 코드가 없어서 편리하게 사용할 수 있습니다. Serializable은 내부적으로 Reflection을 사용하는데 이 처리 과정 중에 많은 객체들이 추가로 생성되고 사용됩니다. 이 많은 객체들은 가비지 컬렉터의 타겟이 되어 가비지 컬렉터의 과도한 동작으로 인해서 성능 저하가 발생합니다. data c..

안드로이드/UI

[Android] Chip과 ChipGroup

Chip Chip은 입력이나 속성, 작업을 나타내는 대화형 압축 요소입니다. 이는 필터링 설정이나 작은 텍스트를 보여주는데 유용하게 사용됩니다. Chip을 사용하기 위해서는 build.gradle에 Material Library가 추가되어 있어야 합니다. implementation 'com.google.android.material:material:1.9.0' ChipGroup Chip만 사용할 경우 줄이 가득차면 다음 줄로 넘어가지 않고 계속해서 옆으로 생성됩니다. 이럴 때, ChipGroup 안에 Chip을 생성하면 알아서 다음 줄에 Chip을 생성됩니다. ChipGroup을 사용하면 자동 개행이 적용되고, 여백을 한 번에 조정할 수도 있습니다. Chip의 속성 style : Chip의 스타일 Ent..

안드로이드/UI

[Android] TextInputLayout 사용하기

TextInputLayout TextInputLayout은 EditText를 기반으로 좀 더 유연한 동작을 보여주는 레이아웃입니다. 이는 TextInputEditText를 감싸고 있고 TextInputEditText에 입력된 텍스트에 반응합니다. TextInputLayout을 사용하기 위해서는 build.gradle에 Material Library가 추가되어 있어야 합니다. implementation 'com.google.android.material:material:1.9.0' 먼저 아무 속성도 설정하지 않을 때의 TextInputLayout의 모습은 다음과 같습니다. TextInputLayout의 속성 style : 기본 스타일인 FilledBox과 OutlinedBox app:errorEnabled..

안드로이드/개념

[Android] Timer와 Thread

Timer 코틀린에서 기본으로 제공하는 timer()는 일정 시간을 주기로 동작을 반복 수행하도록 지원합니다. timer()의 파라미터는 다음과 같습니다. name: String? - 함수를 실행하는데 필요한 스레드의 이름 지정 (기본값 : null) daemon: Boolean - true일 경우 Daemon 스레드로 동작 (기본값 : true) initialDelay: Long - 실행되기까지의 지연시간 지정 (기본값 : 0, 단위는 1000분의 1초) period: Long - Thread.sleep()처럼 실행주기 설정 (필수로 설정, 단위는 1000분의 1초) timerTask = timer(initialDelay = 1000, period = 100) { // 오래 걸리는 작업 수행부분 run..

damon-911
'분류 전체보기' 카테고리의 글 목록 (15 Page)