본문 바로가기

분류 전체보기110

[Open Source] 개발하면서 자주 썼던 함수 정리 (maxBy, minBy, groupBy, map, reduce, indices, compareTo) 알아두면 유용한 함수들을 정리해 보려 한다. ​ 1. maxBy, minBy - 배열에서 가장 큰 수와 작은 수를 구할때 사용 fun main() { val arrInt = IntArray(10) {0} for(i in 0 until arrInt.count() step 1){ val random:Random = Random() arrInt[i] = random.nextInt(100)+1 } println(arrInt.contentToString()) // val maxNum:Int? = arrInt.maxBy{it} val maxNum:Int = arrInt.maxBy{it} ?: -1 val minNum:Int = arrInt.minBy{it} ?: -1 println("arrInt에서 가장 큰 수는 .. 2021. 3. 5.
[Android] 화면 크기 별 Layout 생성 화면 크기 별 Layout이 필요한 이유 모바일 환경에서 layout은 여러 가지 화면으로 변형될 수 있다. 예를 들면 하나의 layout을 스마트폰과 태블릿 두 곳에서 사용하면 분명 layout 객체들의 크기가 달라 보일 것이다. 또한 세로, 가로 화면의 전환에 따라 view가 달라질 수 있기에 귀찮더라도 화면의 크기에 따라 또 화면 모드에 따라 맞춰서 layout을 각자 생성해 주는 경우가 있다. ​ 구현해보기 기본 화면은 아래와 같이 세로 모드 portrait로 생성된다. ​ 그럼 가로모드 landscape 화면을 생성해 보자. New -> Layout Resource File ​ File name을 activity_main(본인이 만들려는 layout 이름과 동일하게) -> Orientation .. 2021. 3. 5.
[Android] Serialize, Parcelable, Parcelize 정리 Serialize, Parcelable, Parcelize를 사용하는 이유 기본 자료형과 참조 자료형 객체를 갖고 있는 데이터 클래스를 전달하기 위해 사용한다. 주로 안드로이드에서는 Intent에 데이터 객체 담아 보낼 때 사용된다. ​Serialize 이름 그대로 데이터를 직렬화 해주는 방식이다. Kotlin에서 구현하면 아래처럼 굉장히 짧게 구현할 수 있다. data class Player(val league: String, val skill: String): Serializable reflection이라는 기술을 사용하여 런타임에서 데이터를 직렬화/역 직렬 화하는 과정을 진행하기 때문에 GC가 할 일이 늘어나 속도가 느리다. Parcelable 기존 java를 이용해 앱 개발했을 때, 사용하던 방식.. 2021. 3. 5.
화면 회전에도 상태 값 유지하기 아래 프로젝트는 8개월 전 Udemy에서 Kotlin for Android:Beginner to Advanced강좌를 통해 공부했던 내용이다. 화면을 회전하게 되면 Activity는 저절로 OnPause -> OnStop -> OnDestroy -> OnCreate -> OnStart -> OnResume을 수행하게 된다. 이 과정에서 당연히 우리가 변수로 저장했던 값들을 null 값으로 변하게 되고 다음 Activity 또는 fragment로 보내려던 값을 정상적으로 보내지 못하게 된다. ​ 이 경우 여러 가지 방법이 있겠지만 가장 쉽고 대표적인 방법으로 OnSaveInstanceState()와 onRestoreInstanceState()를 사용하는 방법이 있다. ​ activity_league.xml.. 2021. 3. 5.