본문 바로가기

전체 글

(103)
Kotlin / 제네릭 알아보기 1. 제네릭 알아보기 제네릭은 타입 매개변수를 지정해서 임의로 작성하고 호출할 때 타입 인자를 전달해서 처리하는 방식이다. 1. 제네릭 처리 기준 자료형을 특정 문자로 지정 -> 타입 매개변수와 타입 인자로 사용 타입 매개변수(Type Parameter) : 클래스나 함수의 자료형을 임의의 문자로 지정해서 컴파일 타임에 자료형 점검을 할 때 사용 타입 인자(Type Argument) : 객체 생성, 함수 호출할 때 실제 자료형을 지정해서 정해진 임의의 타입을 실제 타입으로 변경 제네릭 구성 가능 여부 함수, 클래스, 추상 클래스, 인터페이스, 확장함수, 확장 속성 하나의 객체만 만드는 object 정의, 동반 객체, object 표현식은 제네릭을 구성할 수 없다. 타입 매개변수와 타입 인자를 지정하는 위..
android / 안드로이드 webview history back 화면 스크롤 유지 방법 (activity 이동) 안드로이드에서 띄운 webview에서 history back을 하면 전 화면으로 돌아가면서 refresh가 되는 현상이 생겼다. 스크롤을 내렸다가 다음 화면으로 넘어가고 뒤로 돌아왔을때, 화면이 새로고침 되어 스크롤 유지가 안됐다. 화면이 이동돼도, 이전 화면을 유지시키고 싶기 때문에 특정 화면 이동시 새로운 액티비티를 띄우고, 뒤로 갈때는 새로운 액티비티를 finish 하는 방법을 선택했다. 1. 다음 화면으로 넘어갈때 새로운 Activity를 만들어 Intent로 페이지 이동 override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { Util.logMessage("shoudOverrideUrlLoading ==> $url"..
안드로이드 / image crop 라이브러리 사용 Android Image Cropper Android Image Cropper는 쉽게 이미지를 크롭하는 라이브러리이다. https://github.com/CanHub/Android-Image-Cropper GitHub - CanHub/Android-Image-Cropper: Image Cropping Library for Android, optimised for Camera / Gallery. Image Cropping Library for Android, optimised for Camera / Gallery. - GitHub - CanHub/Android-Image-Cropper: Image Cropping Library for Android, optimised for Camera / Gallery...
안드로이드 / 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..

반응형