반응형

코틀린 33

Deep Copy(깊은 복사)와 Shallow Copy(얕은 복사)

이번 글에서는 Deep Copy와 Shallow Copy에 대해서 알아보도록 하자. 데이터 우리가 프로그래밍 중 사용하는 데이터는 크게 두 가지 타입으로 분류할 수 있다. Value Type Reference Type 이 둘의 차이는 데이터를 메모리에 어떻게 저장하느냐에 따라 나뉘게 된다. 프로그램에서 사용하는 메모리 영역 중 힙(Heap)영역과 스택(Stack)영역이 있는데, Value Type의 경우 값을 Stack영역에 저장하고, Reference Type의 경우 실제 데이터는 Stack에 저장한 뒤 해당 메모리의 주소값을 Stack영역에 저장하여 이를 통해 데이터를 불러오게 된다. C언어를 배우신 분들은 포인터에 대해 아실테니 위와 같은 개념을 좀 더 잘 알고 계시리라고 생각한다. Deep Cop..

Array.map, Array.reduce, Array.filter (코틀린)

면접에서 Array의 map과 reduce가 무엇인지에 대한 질문이 들어왔다. Array에서 두 함수를 사용해본 적이 없어서 답변을 하지 못해 글로 작성하여 알아보도록 하자. Array.reduce() 일단 reduce부터 알아보도록 하자. 코틀린 공식 문서에는 reduce함수는 위와 같이 작성되어있다. reduce함수는 Array의 첫 번째 값부터 시작하여 순서대로 지정한 연산을 수행한 값을 리턴한다. 코드를 통해서 사용해보도록 하자. fun main(){ var arr = arrayOf(183, 17, 32, 10, 8, 27) var res = arr.reduce{x, y -> x + y} println(res) } 위 코드에서 arr이라는 Array에 reduce함수를 사용한다. 연산을 수행하는 ..

안드로이드 AudioManager로 볼륨 조절(Kotlin)

이번 글에선 안드로이드에서 AudioManager를 사용해 볼륨을 조절하는 법에 대해 알아보도록 하자. 권한 요청 해당 기능을 사용하기 위해선 방해금지 권한이 필요하다. android.permission.ACCESS_NOTIFICATION_POLICY 먼저, Manifest파일에 위와 같은 코드를 추가해주고 사용자에게 권한을 요청해야 하는데, 여기서 다른 권한들과 요청하는 방법이 조금 다르다. val notificationManager = this.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager if(Build.VERSION.SDK_INT >= 23){ if(!notificationManager.isNotificationPoli..

안드로이드 Geofence(지오펜스)

이번 글에서는 안드로이드의 Geofence를 사용하는법에 대해 알아보도록 하자. Geofence에서 fence는 담, 울타리 등을 의미하는데, 스마트폰의 GPS위치를 기반으로 장소와 범위를 지정하여 울타리를 만들고, 울타리 내에 들어가거나 나올때에 이벤트를 동작시키는 기능이다. Geofence는 BroadCastReceiver를 사용하여 백그라운드에서 동작한다. 때문에 앱을 실행중이지 않을 때에도 이벤트가 발생하면 정해진 동작을 수행한다. 이제 실제로 Geofence를 사용하는 법에 대해서 알아보도록 하자. Defendency Geofence를 등록하기 위해선 gradle파일에 의존성을 추가해주어야 한다. dependencies { ... implementation 'com.google.android.g..

lateinit과 by lazy의 차이

코틀린에서는 기본적으로 변수에 null이 들어가는 것을 허용하지 않는다. (nullsafe) 때문에 아래처럼 class에서 전역 변수를 선언하고 이후에 초기화하기 위해선 해당 변수를 nullable한 변수로 선언해줘야 한다. class exam(){ var a: String? = null fun hello(){ a = "Hello" println(a) } } 하지만, 위와 같은 방법은 다음과 같은 이유로 쓰는 것이 꺼려질 수 있다. 1. 변수 a가 nullable하기 때문에 null이 들어가면 안 되는 변수에 사용하기가 꺼려진다. (Kotlin의 null safety장점 활용 불가) 2. 해당 변수의 값이 초기화 이후 변하지 않을 경우 a를 var로 선언할 필요가 없어진다. 위와 같은 경우에 사용하기 위..

안드로이드 데이터베이스 SQLite(Koltin)

많은 양의 데이터를 관리하려면 데이터베이스는 필수라고 할 수 있다. 데이터베이스에도 종류는 여러가지지만, 이 글에선 안드로이드에서 기본적으로 사용가능한 SQLite를 사용해보자. DB생성 가장 먼저 DBHelper.kt파일을 생성하여 아래와같이 작성해준다. class DBHelper( context: Context?, name: String?, factory: SQLiteDatabase.CursorFactory?, version: Int ): SQLiteOpenHelper(context, name, factory, version){ override fun onCreate(db: SQLiteDatabase) { var sql: String = "CREATE TABLE if not exists animals..

안드로이드 스피너(Spinner, Kotlin)

스피너는 위와 같이 여러 개의 값 중에 하나의 값을 선택할 수 있도록 하는 방법 중 하나이다. 스피너는 초기에 기본값으로 설정된 값을 표시하고 있으며, 클릭 시 드롭다운 메뉴를 표시하여 자신이 원하는 값을 선택할 수 있다. 스피너에 제공하는 값들은 SpinnerAdapter를 통해 제공되는데, 값들을 어떠한 자료 구조에서 가져오느냐에 따라 배열의 경우 ArrayAdapter, 데이터베이스 쿼리에서 가져오는 경우 CursorAdapter 등을 사용할 수 있다. 이번 글에서는 ArrayAdapter를 사용하여 배열 구조에서 값들을 가져와보도록 하자. XML 만들기 스피너에 사용할 값들이 사전에 결정된 경우에는 문자열 리소스 파일을 정의하여 사용할 수 있다. 토끼 곰 호랑이 사자 고양이 먼저, res/valu..

안드로이드 커스텀 다이얼로그(CustomDialog, Kotlin)

다이얼로그는 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메시지를 표시하는 창이다. 다이얼로그는 보통 화면을 가득 채우지 않고, 사용자가 다음으로 진행하기 전에 조치를 취해야 하는 이벤트에 사용된다. 이런 다이얼로그를 생성하기 위한 일반적인 방법으로 AlertDialog를 사용하는 방법이 있는데, 이 글에선 AlertDialog가 아니라 사용자가 직접 정의하는 CustomDialog를 만드는 법에 대해서 알아보자. CustomDialog 기본적으로 다이얼로그라는 창을 사용자에게 보여주기 위해선 해당 창을 디자인해야 할 것이다. 그러니 가장 처음으로 우리가 만들 CustomDialog의 레이아웃을 만들어보도록 하자. 여기서 사용할 레이아웃은 위와 같이 아주 간단하게 만들어봤다. 다음으로 CustomD..

안드로이드 AlertDialog(Kotlin)

다이얼로그는 위의 사진처럼 사용자에게 결정을 내리거나 추가 정보를 입력하라는 메시지를 표시하는 창이다. 다이얼로그는 보통 화면을 가득 채우지 않고, 사용자가 다음으로 진행하기 전에 조치를 취해야 하는 이벤트에 사용된다. 이 글에선 간단하게 사용가능한 다이얼로그인 AlertDialog를 사용하는 법에 대해 알아보자. AlertDialog 적당한 프로젝트를 하나 생성하고, layout파일부터 작성해보도록 하자. layout에 버튼 하나를 추가하여 해당 버튼을 누르면 Dialog가 나오도록 코드를 작성해보자. class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreat..

안드로이드에서 네이버 지도 사용 (Kotlin)

안드로이드에서 네이버 지도를 사용하는 법에 대해서 알아보자. 가장 먼저 API 이용을 위해 네이버 클라우드 플랫폼 페이지로 들어가 준다. https://www.ncloud.com/ NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification www.ncloud.com .해당 페이지에서 로그인을 한 뒤 서비스 -> Application Service -> Maps로 들어가 준다. 그러면 위와 같은 화면으로 이동하는데, 여기서 이용 신청하기를 선택한다. 다음으로 이동하는 페이지에서 Application 등록을 선택하여 새로..

반응형