분류 전체보기
-
[TedImagePicker] 1-1. 비동기 방식 이미지 1개 선택 코드 분석오픈소스 공부/TedImagePicker 2024. 5. 23. 17:00
링크 : https://github.com/ParkSangGwon/TedImagePicker TedImagePicker 라이브러리를 다운받고 실행해보면 아래와 같이 나온다. 스크린샷더보기 MainActivity에 해당되는 부분이다. 화면을 보면 아래 2가지 정도로 나눠져 있다. (1) NORMAL/RX (동기/비동기)(2) SINGLE/MULTI (1개/여러개) MainActivity의 첫번째 버튼 코드를 보자면 아래와 같다. (현재 MainActivity.kt)1. setNormalSingleButton 메서드 private fun setNormalSingleButton() { binding.btnNormalSingle.setOnClickListener { TedImagePick..
-
[Kotlin] object코틀린 공부/코틀린 기초 2024. 5. 23. 15:30
object는 코틀린에서 클래스를 정의함과 동시에 객체를 생성하는 것이다. object는 Singleton Pattern을 언어 차원에서 지원한다고 생각하면 이해가 더 쉬울 것 같다. object로 생성된 객체의 특징class 키워드 대신 object 키워드를 사용해서 클래스를 정의함과 동시에 객체를 생성한다. 일반 클래스처럼 프로퍼티, 메소드, 초기와 블록을 가질수 있지만, 생성자는 가질 수 없다.클래스를 상속 받을 수 있고, 여러개의 인터페이스를 갖을 수 있다. 그래서 object는 kotlin에서 크게 3가지 방식으로 사용이 가능하다 1. 객체 선언(Object Declaration)객체 선언은 Singleton pattern을 쉽게 구현할 수 있게 해준다. object로 선언된 객체는 최초..
-
[Kotlin] 스코프 함수 (Scope Function)코틀린 공부/코틀린 기초 2024. 5. 23. 10:30
코틀린은 스코프 함수 라는 것을 제공한다. 스코프 함수는 특정 객체의 특정 동작 (프로퍼티 초기화, 활용 등)을 실행하기 위한 목적만을 가진 함수다. 스코프 함수를 람다 함수로 사용하게 되면 임시로 Scope를 형성하는데, 이 Scope 내에데 객체의 이름을 일일이 참조할 필요 없이 객체를 접근하고 핸들링할 수 있다는 편리하다는 장점이 있다. 코틀린에서 제공하는 스코프 함수는 5가지다.apply, run, with, also, let1. applyapply 함수는 인스턴스를 새로 생성하고 특정 변수에 할당하기 전에 초기화 작업을 해줄수 있는 스코프를 만들어줌apply 함수 내에 모든 명령이 수행되고 나면 명령들이 적용되어 새로 생성된 인스턴스를 반환한다는 특징을 갖는다. data class ScopeF..
-
[Kotlin] 고차함수와 람다함수코틀린 공부/코틀린 기초 2024. 5. 22. 11:22
1. 람다 함수란?람다 함수는 일반 함수와 다르게 fun 키워드도 사용하지 않으며 함수 이름도 없이 변수에 대입해서 사용한다. (익명 함수)// 일반적인 함수 선언 방식fun plus(a: Int, b: Int) : Int { return a + b}// 람다 함수 선언 방식val sum = {a:Int, b:Int -> a+b} 위의 plus함수는 일반적인 함수의 선언 방식이고아래 sum에 할당된 것이 람다 함수이다. 1-1 람다 함수 규칙{ ... } 로 표현한다.{ ... } 안에 -> 가 있으면 왼쪽은 parameter, 오른쪽은 함수의 본문이다. 함수의 return 값은 함수 본문의 마지막 표현식이다. 즉 위에서 sum 에는 a+b의 값이 할당된다. 1-2 선언 방법val sum = {a..
-
[Kotlin] 추상 클래스와 인터페이스코틀린 공부/코틀린 기초 2024. 5. 21. 14:29
자바에서도 추상 클래스 (abstract class)와 인터페이스 (interface)의 개념이 있다. 하지만 코틀린 기초 설명 영상을 보니 자바와는 조금 다른 개념이 포함되어 있는 것 같아 공부해보기로 했다. 1. 추상 클래스란? 코틀린에서 추상 클래스는 일반적으로 설계의 청사진을 제공하며, 공통 기능을 구현해 놓은 클래스다. 이 클래스는 구체적인 내용을 모두 포함하지 않으며, 이를 상속받는 하위 클래스에서 더 구체적인 구현을 해야 합니다. 따라서, 하위 클래스는 추상 클래스의 일부 기능을 상속받고, 추가적인 구체적인 기능을 제공하여 추상 클래스의 설계를 완성하게 됩니다. abstract class가 활용될 상황을 생각해보자면, 공통 기능의 구현과 확장을 통해 여러 클래스 간에 공통된 기능을 공유하..
-
[Kotlin] 코틀린 class (open, data , sealed, internal class)코틀린 공부/코틀린 기초 2024. 5. 17. 15:04
자바에는 없는 코틀린 class에서 다른 키워드들을 학습해보려고 한다. (open, data, internal class) 1. open class기존에 자바에서는 일반 class를 상속하는 것이 가능했다. class Parent{}class Child extends Parent{} 코틀린에서는 class를 상속하기 위해서는 open이라는 키워드를 같이 사용해야 한다. 왜냐하면 코틀린에서는 기본적으로 클래스와 메스드가 다 final 이기 때문이다. open class Parent {}class Child:Parent() {} 메서드를 상속하고 싶다면 open을 붙여줘야 한다. open class Animal(var name:String, var age: Int) { open fun introduce..
-
[Kotlin] 코틀린 생성자(Constructor)코틀린 공부/코틀린 기초 2024. 5. 17. 11:31
코틀린의 생성자를 알기는 했지만 너무 간략하게만 알고 있어서 좀더 명확하게 공부할 필요성을 느껴 공부할 필요성이 있었다. 코틀린의 생성자(Constructor) 코틀린에서는 하나의 주생성자와 여러개의 부 생성자를 나눠서 사용할 수 있다. 1. 주생성자a) constructor 키워드 사용class Test1(private val name: String, val age: Int, val money: Int) b) constructor 키워드 사용class Test1 constructor(private val name: String, val age: Int, val money: Int) c) init()주생성자 같은 경우 생성자를 만들면서 수행하고 싶은 기능을 수행할 수 없다. 그래서 있는게 초기화 ..
-
안드로이드 Rxjava 사용하기 (1)안드로이드 학습/Android 기술면접 대비 코드 2024. 3. 6. 14:34
설명 : 1. [안드로이드 RxJava] 1. Rxjava, RxAndroid란?2. [안드로이드 RxJava] 2. Observable 클래스 Rxjava가 뭔지는 학습하기는 했지만 개념 이해로는 어떻게 사용하는지 잘 모르겠어서 직접 만들어 보면서 공부해보기로 했다. 기본적으로는 (1) Observer로 Observable에서 발행할 데이터를 어떻게 처리 해줄지 지정.(2) Observable로 무슨 데이터를 발행하고 발행 이후 어떤 것을 할지 지정(3) Observable로 Observer 구독 이정도의 과정이 있지 않을까 싶다. build.gradle (app)implementation("io.reactivex.rxjava3:rxandroid:3.0.2")implementation("io.re..
-
안드로이드 LiveData안드로이드 학습/Android 기술면접 대비 2024. 2. 6. 11:56
안드로이드 공부를 하면서 LiveData를 봤던 것이 JetPack과 아키텍처 패턴이다. LiveData는 JetPack의 AAC에 포함되어 있어서 봤었고, 아키텍처 패턴에서는 MVVM에서 LiveData와 DataBinding과 함께 유용하게 사용된다고 해서 봤었다. 그래서 한번 LiveData에 대해 공부해보았다. LiveData란 ? LiveData는 Android JetPack 중 observable data holder class. 일반적인 observable 과는 다르게, LiveData는 안드로이드의 4대 컴포넌트들에 포함되어 있는 Activity, Fragment, Service의 생명주기를 인지한다. LiveData는 활성상태(active)일때만 데이터를 업데이트(update)한다. 활성..
-
CameraX 사진 깨지는 현상회사 생활/기타 지식들 2024. 1. 25. 11:52
안드로이드 CameraX에서 ImageProxy를 bitmap으로 바꾸는 과정에서 오류가 발생했다. CameraX의 버전이 1.3.0 이상이라면 ImageProxy.toBitmap()을 사용하면 될것이지만 그 이하 버전은 해당 메소드를 지원되지 않는다. 하지만 CameraX는 1.3.0 compileSdkVersion이 34 이상이여야 한다고 한다. Dependency 'androidx.camera:camera-extensions:1.3.0' requires 'compileSdkVersion' to be set to 34 or higher. Compilation target for module ':app' is 'android-33' 물론 추후 compileSdkVersion나 targetSdk를 34로..