본문 바로가기

분류 전체보기

(108)
안드로이드 / android 13 photo picker 사용방법 사용 배경 기존에 사용하던 Image picker+crop 라이브러리가 android13의 일부 기종에서만 갤러리를 못가지고 왔다. android13 대응이 되어있지 않은 라이브러리라, 해당 라이브러리 사용이 더이상 힘들었다. 원하는 Image picker+crop 라이브러리가 딱히 없어서, android13부터 등장한 photo picker를 적용하고, crop라이브러리를 따로 사용했다. crop 라이브러리 적용기는 하단 링크에서~ https://dev-ej2.tistory.com/81 안드로이드 / image crop 라이브러리 사용 Android Image Cropper Android Image Cropper는 쉽게 이미지를 크롭하는 라이브러리이다. https://github.com/CanHub/A..
Kotlin / 위임(delegation) 알아보기 모든 객체지향 프로그래밍 언어에서는 클래스 간의 상속관계를 기본 문법으로 제공한다. 코틀린 역시 위임관계를 문법으로 제공해서 다양한 클래스의 관계를 쉽게 처리할 수 있도록 지원한다. 1. 클래스 위임 알아보기 클래스 위임 : 특정 클래스에 자기 클래스가 할 일을 다른 클래스에게 맡겨 처리하는 것 코틀린에서 위임 관계를 by를 사용해서 쉽게 구성할 수 있다. 보통 하나의 클래스에는 하나의 책임을 부여해서 설계하는 방식을 사용한다. 위임은 2개의 클래스가 동일한 책임을 가지고 나눠서 처리한다. 좋은점 : 다양한 기능을 하나의 클래스를 통해서 받고 처리할 수 있도록 구조화할 수 있다. interface Base { // 인터페이스 정의 fun say() } class BaseImpl(val x: Int) : ..
Kotlin / 함수 추가사항 알아보기 1. 함수형 프로그래밍이란 순수함수와 일급 객체 함수 함수는 참조 투명성(지역변수만 사용)을 갖춰야 항상 동일한 입력에 동일한 결과를 반환하는 순수 함수를 만들 수 있다. 순수 함수(pure function)의 조건 동일한 인자로 실행하면 항상 동일한 값 반환 함수 내부에서 반환값 이외의 결과로 부수효과가 발생하지 않는다 부수효과(side effect) 함수가 실행되는 과정에서 함수 외부의 데이터를 사용 및 수정하거나 외부의 다른 기능을 사용하는 것을 말한다 함수가 전역변수를 사용하거나 수정하는 것 함수가 표준 입출력을 사용해서 키보드 입력과 화면 등에 출력 함수가 파일을 읽고 쓰는 작업을 수행 함수를 사용해서 데이터베이스에 연결 fun purefunc(a:Int, b:Int):Int{ return a+..
Kotlin / 추상클래스, 인터페이스 알아보기 1. 추상클래스 추상클래스는 abstract 예약어로 지정한 클래스이다. 직접 객체를 생성할 수 없고, 항상 다른 클래스에서 상속해서 추상 메서드를 구현해야 한다. abstract class Person { // 추상 클래스 정의 abstract val name: String // 추상 속성 정의 abstract fun displayName() // 추상 메서드 정의 } class Woman : Person() { // 구현 클래스 정의 override val name: String = "은정" // 추상 속성 오버라이딩 override fun displayName() { // 추상 메서드 오버라이딩 println("이름 : $name") } } val woman = Woman() woman.displa..
Kotlin / 컬렉션 알아보기 1. 리스트, 세트, 맵 알아보기 컬렉션의 가변과 불변 가변(mutable) : 보통 컬렉션 객체는 추가, 수정, 삭제를 할 수 있다 불변(immutable) : 컬렉션 객체 중에 한 번 만들어지면 추가, 수정, 삭제를 할 수 없다. 리스트 클래스 ArrayList : 고정 길이로 리스트를 만든다. listOf, mutableListOf로 객체 생성 LinkedList : 가변 길이로 리스트를 만든다. 각 원소가 가지는 주소를 별도로 보관. LinkedList 클래스로 리스트 객체 생성 val list1 = listOf(1,2,3) // 불변 리스트 객체 생성 val list2 = mutableListOf(1,2,3) // 가변 리스트 객체 만들기 list2.add(10) // 원소 추가 list2.re..
compose / Column Scrollable 하게 만들기 (Column + verticalScroll) 항목 목록을 표시하기 위해선 Column에 verticalScroll 보다 LazyColumn 이나 LazyRow가 더 효율적이다. verticalScroll은 스크롤할 수 있는 간단한 방법을 제공한다. scrollState를 사용하면 스크롤 위치를 변경하거나 현재 상태를 가져올 수 있다. @Composable private fun ScrollBoxesSmooth() { // Smoothly scroll 100px on first composition val state = rememberScrollState() LaunchedEffect(Unit) { state.animateScrollTo(100) } Column( modifier = Modifier .background(Color.LightGray) ..
Kotlin / 클래스 관계 등 추가사항 알아보기 1. 클래스 연관관계 알아보기 클래스 관계 상속관계 (is a) : 클래스를 상속해서 하나의 클래스처럼 사용한다. 연관관계 (has a) : 클래스를 상속하지 않고 내부적인 속성에 객체를 만들어서 사용한다. 결합관계 (약한 has a) : 연관관계를 구성하는 방식 중에 클래스 간의 주종관계 없이 단순하게 사용하는 관계를 말한다. 조합관계 (강한 has a) : 연관관계를 구성하는 방식 중에 클래스 간의 주종관계가 있어서 따로 분해해서 사용할 수 없는 관계를 말한다. 의존관계 (사용 has a) : 필요한 클래스를 매개변수 등으로 받아 필요한 시점에 사용하는 관계를 말한다. 결합(Aggregation) 관계 단순하게 사용하는 클래스에서 사용된 클래스의 객체를 속성으로 만들어서 사용 보통 주 생성자에 객체를..
Kotlin / 내장 자료형 알아보기 1. 내장 자료형 알아보기 클래스를 만들 때는 항상 기본적인 최상위 클래스가 필요하다. 코틀린에서는 최상위 클래스로 Any 클래스를 제공한다. 이렇게 코틀린이 기본으로 제공하는 클래스를 내장 자료형이라고 한다. 숫자 클래스 코틀린에서 숫자클래스의 상위클래스를 Number로 정의했다. - NaN (not a number) 실수는 숫자를 정확히 모를 때는 무한대를 사용하고, 숫자가 아닌 경우에는 NaN을 사용한다. NaN은 계산도 비교도 안된다. 어떤 숫자와 계산해도 항상 NaN이다. (자기 자신과도 비교 x) // NaN과의 연산은 항상 NaN println(Double.NaN + 100.0) // NaN // NaN은 비교할 수 없다 println(Double.NaN == Double.NaN) // fa..

반응형