본문 바로가기

Android

(38)
안드로이드 앱 개발의 특징 및 디렉터리 구조 안드로이드 앱 개발의 특징 안드로이드의 특징 iOS에 비해 많이 오픈되어 있다. 안드로이드는 공개 운영체제인 리눅스 기반이다. 안드로이드 앱 개발은 자바 및 코틀린을 이용해 개발한다. 운영체제의 핵심 코드, 라이브러리 코드, 스마트폰에 기본으로 탑재된 구글에서 만든 앱 코드 등 대부분 코드가 오픈되어 있다. 안드로이드 플랫폼 기반의 스마트폰을 여러 제조업체에서 만들 수 있다. 개발자가 만든 앱은 구글 Play 스토어 뿐만 아니라 다양한 방법으로 사용자에게 배포할 수 있다 안드로이드 기반의 모든 애플리케이션은 평등하다는 사상으로 스마트폰에 기본 탑재된 앱과 개발자들이 만드는 앱이 같은 환경에서 같은 API를 사용한다. 기기의 파편화해상도가 다양함 스마트폰 제조업체에서 안드로이드 플랫폼을 이런 저런 이유로 ..
[Kotlin] Recyclerview click Event (람다 함수 사용) 이번에는 코틀린의 고차 함수와 람다 표현식을 사용해 RecyclerView에 Click Event를 추가해보겠습니다. 결과 과일 이름 리스트를 보여주고, 텍스트 뷰 하나만 있는 매우 심플한 Recyclerview입니다. 클릭했을 경우 클릭된 과일의 이름을 토스트 메시지로 출력하도록 해보겠습니다. 클릭 시 호출될 함수 생성 Activity 파일에 Adpater에서 호출할 함수를 생성합니다. private fun listItemClicked(fruit: Fruit){ Toast.makeText(this@MainActivity, "fruit name is ${fruit.name}",Toast.LENGTH_LONG).show() } Adpater 생성자에 클릭 리스너 람다 함수를 매개 변수로 설정하기 Adpat..
[Android] AAC Navigation 사용하기 (이동, 데이터 전송, 애니메이션) 이전에 Navigation의 구성요소, 원칙 등을 살펴봤습니다. 이번에는 Navigation을 사용해 Fragment 간에 이동, 데이터 전송, 애니메이션 등을 구현할 것입니다. 결과 총 5개의 Fragment를 이동할 것이며 이름, 이메일 문자열을 데이터로 전송할 것입니다. 의존성 선언 build.gradle (app or module) dependencies { def nav_version = "2.3.3" // Kotlin Navigation implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" } S..
[Android] AAC Navigation 살펴보기 Navigation은 무엇일까? Navigation Architecture Component(이하 Navigation)는 18년도에 처음 소개된 Android Jetpack Library입니다. Fragments, Activities와 같은 components 간 탐색을 돕기 위한 라이브러리입니다. Android Jetpack의 Navigation 구성 요소는 간단한 버튼 클릭부터 앱 바 및 탐색 창과 같은 더 복잡한 패턴까지 탐색을 구현하는 데 도움이 됩니다. single activity, multiple fragment 구조를 구현하기 쉽게 해 줍니다. Navigation 사용하여 할 수 있는 것들 Fragment 트랜잭션을 관리할 수 있다. Up, Back 버튼의 작업 등(백 스택 관리)을 간단하게..
Android 양방향 데이터 바인딩 사용하기 (Two-way DataBinding With LiveData) 이전에 DataBinding에 LiveData를 사용해 데이터가 변경될 때마다 실시간으로 UI에 반영되도록 했습니다. 이번에는 사용자가 입력한 값을 가져와서 처리할 때 유용한 양방향 데이터 바인딩(Two-way DataBinding)을 사용해보겠습니다. 기존에 사용하는 단방향 데이터 바인딩의 경우 다음과 같이 LiveData가 가진 데이터를 사용자에게 보여줄 때 유용했습니다. android:text="@{String.valueOf(myViewModel.countData)}" 하지만 사용자가 입력한 값을 사용하려면 여전히 EditText에서 Text를 가져오는 과정을 직접 작성을 해야 했습니다. EditText에 사용자가 입력한 값을 LiveData가 가지고 있어서 처리가 필요할 때마다 ViewModel에..
DataBinding에 ViewModel, LiveData와 함께 사용하기 지난 LiveData 사용하기에 이어서 DataBinding을 ViewModel, LiveData와 함께 사용해보려고 합니다. 결과물 버튼을 클릭하면 1을 더한 결과를 보여줍니다. 주요 처리 사항 ViewModel을 Databinding에 사용하기 덧셈 결과(LiveData)가 버튼 클릭으로 인해 변경될 때마다 실시간으로 TextView에 반영이 됩니다. MainActivity.kt에서 덧셈 결과(LiveData)를 관찰하는 코드를 명시 안 해도 됩니다. MainActivity.kt ViewModel을 생성한 이후 binding의 변수로 사용합니다. layout에서 ViewModel이 가지고 있는 LiveData, 함수 등을 사용할 수 있습니다. 또한 LiveData를 DataBinding에서 사용할 때..
[안드로이드/Android] LiveData 사용하기 LiveData은 무엇이고 왜 사용할까? LiveData는 Data의 변경을 관찰할 수 있는 Data Holder 클래스입니다. (LiveData is lifecycle aware observable data holder class) lifecycle aware app components인 activities, fragments, or services 들의 생명 주기를 고려합니다.(lifecycle aware) lifecycle aware를 한 특징으로 인해 active 한 생명 주기를 가진 관찰자만(activities, fragments, or services) 업데이트할 수 있습니다. ** Observer (관찰자)란 LiveData가 가지고 있는 데이터 변화를 관찰하는 대상입니다. 데이터가 변할 때..
[안드로이드/Android] ViewModel 사용하기 안드로이드 os 설정이 바뀌면 activity를 다시 만듭니다. 액티비티 생명주기로는 onDestory 이후 onCreate가 실행됩니다. viewmodel은 이런 경우를 대비해 기존에 UI가 가진 데이터를 가지고 있고 onCreate 할 때 다시 보여줄 수 있습니다.. 설정이 바뀌는 경우는 화면 전환 언어 변경 멀티 윈도우 환경으로 변경 키보드 변경 등등이 있습니다. ViewModel을 사용하지 않았을 경우 겪는 불편함 안드로이드 앱 개발자로서 os 설정 바뀌여서 앱이 다시 시작되는 상황을 고려하고 앱을 만들어야 합니다. 예를 들어 앱이 규모가 큰 앱인 경우 구성이 변경될 때마다 2000천 개의 리스트를 불러오는 비동기 호출을(API 호출) 다시 해야 합니다. 시스템 자원이 불필요하게 사용되고, 사용자..