반응형

Kotlin 9

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

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

안드로이드 리스트에 View붙이기 (Header, Footer)

이번 글에선 ListView의 상단 또는 하단에 다른 View를 부착하는 법에 대해서 알아보도록 하자. ListView는 목록을 보여주기 위해서 사용되는 View이며 이 리스트에 대한 특징, 제목 등을 표현하기 위해 상단에 붙이는 것을 Header, 리스트를 다루기 위해 버튼 등을 하단에 붙이는 것을 Footer라고 한다. Xml파일 작성 먼저, Header와 Footer에 사용할 View의 리소스 파일을 작성한다. 화면 구성은 아래와 같이 해보도록 하자. Header를 위한 Layout파일부터 추가해보도록 하자. 다음으로 Footer를 위한 Layout파일을 추가하자. 다음으로 MainActiviy Layout에 ListVIew를 하나 추가한다. LIstView에 Header, Footer추가 이제 M..

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

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

안드로이드 데이터베이스 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 등록을 선택하여 새로..

Annotation(어노테이션)?

Annotation은 사전적으로 주석이라는 의미를 가지고 있다. 안드로이드 개발 중 @Deprected, @Override @Throws 등을 볼 수 있는데, 컴파일러에게 정보를 제공하거나, 실행 시 특정 코드를 자동적으로 생성해주도록 하는 역할을 하고 있다. Annotation은 기본적으로 Kotlin/Android에 내장되어있는 built in annotation, Annotation에 대한 정보를 나타내는 meta annotation, 개발자가 직접 만드는 cumstom annotation이 있다. 이번 글에선 Kotlin에서 사용하는 annotation을 몇 가지 알아보자. 1. @JvmName 2. @JvmStatic 3. @JvmField 4. @Throws 5. @JvmOverloads @J..

반응형