깨알 개념 86

[Kotlin] 함수형 인터페이스 (Single Abstract Method Interface)

#1 일반 인터페이스 #1-1 평범한 인터페이스 interface MyNormalInterface { fun myFirstMethod(value: Int): String fun mySecondMethod(value1: Int, value2: String): Int ... } 우리가 잘 알고있는 인터페이스의 모습이다. #1-2 함수형 인터페이스의 후보 // 함수형 인터페이스의 형태지만, 함수형 인터페이스는 아님 interface MyFunctionalInterfaceCandidate { fun myMethod(value1: Int, value2: Int): Int } 가진 메소드가 추상 메소드 하나뿐인 인터페이스(Single Abstract Method, SAM)를 특별히 함수형 인터페이스라고 부른다. 해..

[Kotlin] 연산자 오버로딩 (Operator overloading)

#1 메소드 오버로딩 (Method overloading) class Calculator { // 정수형 두 개를 더하는 메소드 fun add(x: Int, y: Int): Int { return x + y } // 실수형 두 개를 더하는 메소드 fun add(x: Double, y: Double): Double { return x + y } } fun main() { val calculator = Calculator() // 정수형 덧셈 val result1 = calculator.add(3, 4) println("Result of integer addition: $result1") // 출력 결과: 7 // 실수형 덧셈 val result2 = calculator.add(2.5, 3.5) printl..

[Android] Navigation - 애니메이션

#1 프래그먼트 전환 애니메이션을 적용할 샘플 앱 [Android] Navigation - 기초 #1 이전 글 [Android] Navigation - 환경 설정 #1 Navigation#1-1 액티비티 및 프래그먼트 구성의 트렌드요즘 안드로이드 개발의 트렌드는 하나의 액티비티, 여러 개의 프래그먼트다. 이는 구글의 권장사항 kenel.tistory.com 위 게시글의 완성된 앱을 수정해 프래그먼트 전환 시 애니메이션을 적용해본다. #2 프래그먼트 전환 애니메이션 #2-1 Action의 속성 Navigation graph를 Design 모드로 연다. 그리고 Action을 클릭하면 Animation이라는 속성을 가지고 있음이 보인다. 즉, 프래그먼트의 전환 애니메이션은 Action이 관리한다는 얘기다. 총..

[Android] Navigation - 기초

#1 이전 글 [Android] Navigation - 환경 설정 #1 Navigation#1-1 액티비티 및 프래그먼트 구성의 트렌드요즘 안드로이드 개발의 트렌드는 하나의 액티비티, 여러 개의 프래그먼트다. 이는 구글의 권장사항이기도 하다. 이 트렌드에서 단일 액티 kenel.tistory.com 위 게시글에서 이어진다. 본 게시글에선 Navigation을 사용하는 샘플 앱을 만들어본다. #2 Navigation 사용하기 - Destination 프래그먼트 #2-1 Navigation graph에 Destination 프래그먼트 등록하기 우리가 activity_main.xml을 다룰 때 Code 모드, Split 모드, Design 모드 중 하나를 선택해 편집하곤 했다. nav_graph.xml도 그렇..

[Android] Navigation - 환경 설정

#1 Navigation#1-1 액티비티 및 프래그먼트 구성의 트렌드요즘 안드로이드 개발의 트렌드는 하나의 액티비티, 여러 개의 프래그먼트다. 이는 구글의 권장사항이기도 하다. 이 트렌드에서 단일 액티비티는 일종의 '빈 그릇'으로서만 의미를 가진다. 유의미한 화면 컨텐츠는 전부 프래그먼트로 구현하기 때문이다. #1-2 Navigation architecture component library 탐색  |  Android 개발자  |  Android DevelopersAndroid Jetpack의 탐색 구성요소를 사용하여 앱에서 탐색 구현developer.android.com그러나, 액티비티와 프래그먼트 간의 전환(Navigation)과 흐름을 일일이 구현하는 것은 골치아픈 일이다. 이 때, 안드로이드 Je..

[Android] Fragment의 생명주기

#1 이전 글 [Android] Activity의 생명주기#1 Android Application의 시작 (AndroidManifext.xml) ... 우리가 앱 아이콘을 누르면, 안드로이드 시스템은 해당 앱의 Launcher Activity를 실행시킨다. AndroidManifext.xml의 등록된 액티비티 중에서 태그를 가지고 kenel.tistory.com프래그먼트는 액티비티와 비슷하지만, 가장 주요한 차이점은 홀로 설 수 없으며 반드시 액티비티나 또 다른 프래그먼트에 종속되어 동작한다는 것이다. 프래그먼트는 액티비티처럼 생명주기를 가지며, 종속된 액티비티나 또 다른 프래그먼트의 생명주기에 영향을 받기도 한다. 이전 글에 이어 이번에는 Fragment의 생명주기를 살펴본다. #2 Fragment의 ..

[Android] Activity의 생명주기

#1 Android Application의 시작 (AndroidManifext.xml) ... 우리가 앱 아이콘을 누르면, 안드로이드 시스템은 해당 앱의 Launcher Activity를 실행시킨다. AndroidManifext.xml의 등록된 액티비티 중에서 태그를 가지고 있는 Activity가 Launcher Activity로 설정된다. 프로젝트를 생성하면 기본적으로 존재하는 Launcher Activity가 바로 우리가 잘 아는 MainActivity다. 이 Launcher Activity라는 진입점을 통해 앱이 실행되면, 비로소 액티비티의 생명주기가 시작된다. #2 Activity LifeCycle #2-1 생명주기 흐름도 'Activity launched'가 #1에서 말한 앱의 진입점이다. 진입..

[Android] MVVM 구조 한눈에 보기

#1 안드로이드 앱의 '전통적인' 방식 vs MVVM 패턴#1-1 도식도와 종속성화살표는 클래스 간의 종속성을 나타낸다. 예를 들어, View는 ViewModel에 종속된다. 종속의 사전적 의미는 '자주성이 없이 주가 되는 것에 딸려 붙음'이다. 종속은 '알아야 한다'라는 말로도 표현할 수 있다. 따라서 View는 ViewModel에 대해 알아야 한다. 반면, ViewModel은 View를 몰라도 된다. ViewModel을 설계할 땐 View에서 뭘 어떻게 할지 전혀 신경쓰지 않아도 된다는 것이다 (대신, ViewModel은 Model에 대해 종속적이므로 Model를 참조하며 설계해야 한다). View를 설계할 땐 ViewModel을 알아야 한다. '알아야 하는 쪽'에서 '몰라도 되는 쪽'으로 화살표를 ..

[Android] LiveData - 양방향 데이터 바인딩의 3가지 방법

#1 단방향 데이터 바인딩#1-1 단방향과 양방향지금까지 해온 Data Binding은 단방향(One Way) 데이터 바인딩이었다. Model 또는 ViewModel에서 View로 가는 흐름으로만 데이터가 갱신된다. 역은 성립하지 않는다. 역이 성립하지 않는 게 꼭 나쁜 것도 아니다. 마치 인터넷 쇼핑몰에서 어떤 물건의 표시된 가격을, 브라우저의 개발자 모드로 바꾼다고 실제 가격이 변하지 않는 것과 같다. 만에 하나 변하는 일도 없어야하고 말이다. #1-2 수정할 샘플 앱 [Android] LiveData - 암시적으로 '관찰'하기#1 ViewModel 속에 LiveData가 있는 샘플 앱 [Android] ViewModel - View에 객체(ViewModel) 전달 #1 개요 #1-1 Data Bin..

[Android] LiveData - 암시적으로 '관찰'하기

#1 ViewModel 속에 LiveData가 있는 샘플 앱 [Android] ViewModel - View에 객체(ViewModel) 전달#1 개요 #1-1 Data Binding과 ViewModel [Android] Data Binding - View에 객체 전달 #1 객체 전달의 필요성 #1-1 이전 글 Data Binding - 기초 #1 데이터 바인딩 사용 전 #1-1 예시 앱 위과 같은 간단한 앱이 있다. Button을kenel.tistory.com위 게시글의 완성된 앱을 토대로 코드를 수정한다. #2 명시적 LiveData.observe() [Android] LiveData - 기초#1 개요 #1-1 LiveData LiveData 개요 | Android 개발자 | Android Develo..