반응형

Kotlin_Android 앱 개발 10

09. 스톱워치 앱 만들기 (부제: Thread in Android)

안녕하세요. 하다블입니다. 개강 이후 수업과 병행하다 보니 시간이 조금씩 더 걸리는 것 같습니다. 이번에는 스톱워치 애플리케이션을 만들어보았습니다. 먼저 결과물을 보여드리겠습니다. 카운트다운이 맨 위에 위치해 있으며 그 아래에 10초가 지나가는 것을 보여주기 위한 Progress Bar가 있습니다. 그리고 측정하기 위해 시간이 있으며 정지 / 시작 버튼으로 구성했습니다. 시작버튼을 누르게 되면 카운트다운이 시작되며 버튼 역시 측정 버튼과 일시정지 버튼으로 바뀌게 됩니다. 물론 카운트다운의 시간은 사용자가 변경할 수 있습니다. 카운트다운이 모두 지나면 시간이 지나며, 체크 버튼을 통해 기록할 수도 있습니다. 기능자체는 단순하다고 볼 수 있지만 이번 애플리케이션 제작을 하면서 배운 것들에 대해 기록하고자 합..

08. 계산기 만들기(부제: constraintlayout Flow 활용하기)

안녕하세요. 하다블입니다. 오늘은 간단한 계산기를 만들어보았습니다. 먼저 결과물부터 보여드리도록 하겠습니다. 키패드에 있는 숫자를 누르게 되면 다음과 같이 보여주게 됩니다. 이후 = 버튼을 누르면 결과가 나타나게 됩니다. 숫자가 커짐에 따라 반점으로 분리하였으며, 굉장히 큰 수도 계산할 수 있도록 구현하였습니다. 숫자를 입력하지 않은 상태로 연산자를 넣게 되면 불가능하다고 알려주도록 구현하였습니다. 연산자가 두 개 연속으로 나오는 등의 수식 역시 오류임을 알려주도록 하였습니다. 이번 계산기 구현 프로젝트에 있어서 가장 큰 목표는 constraintlayout.helper.widget.Flow에 대해 익혀보는 것이었습니다. 계산기에는 많은 버튼 오프젝트가 들어가게 되고 이를 어떻게 정렬하고 사용할 것인지에..

07. 생명 주기 (Life Cycle)

안녕하세요. 하다블입니다. 오늘 기록한 부분은 "생명 주기"입니다. 이전 글에서 잠깐 언급했던 것처럼 화면이 넘어가거나 홈 버튼 등을 눌러 앱이 실행되고 있는 상황에서 밖으로 나오거나 하는 등, 여러 상황에서의 액티비티가 존재하고, 이 액티비티의 상태 정보가 변화하는 것을 액티비티의 생명 주기 또는 수명 주기라고 불립니다. 액티비티의 생명주기를 나타내는 가장 대표적인 그림입니다. 코틀린을 익히고 있는 중이라면 아마 onCreate() 메서드를 가장 많이 접하셨을 겁니다. 프로젝트를 만들게 되면 가장 먼저 존재하는 메스드 중 하나이기 때문입니다. 각각 메서드에 대해 한 줄로 정리하면 다음과 같습니다. onCreate() : 액티비티가 처음에 만들어졌을 때 호출 onStart(): onCreate다음 호출되..

06. 데이터 유지하기 (onSaveInstanceState , onRestoreInstanceState)

안녕하세요. 하다블입니다. 오늘 기록할 부분은 "데이터 유지하기"입니다. 기초부터 프로그래밍하다 보면 잘 작동하는 듯 보이는 나의 어플에도 문제점이 보이게 되는데, 가장 큰 문제점이라고 생각하는 부분은 바로 데이터를 유지하는 못한다는 점입니다. 멀티 윈도로 화면을 띄우거나 팝업으로 화면을 띄우거나 심지어 화면을 가로로 전환하기만 해도 데이터가 유지되지 않는 문제가 발생하게 됩니다. 이러한 부분을 해결할 수 있는 방법은 여러 가지가 있으나 가장 간단한 방법은 onSaveInstanceState()를 사용하여 UI 상태를 저장하는 방법입니다. 대부분 코틀린을 시작하고 배우는 입장에서는 onCreate함수에서 진행될 겁니다. 앱의 LifeCycle에 따라 쓰는 함수가 여러가지가 있지만 이번에는 onCreate..

05. 숫자 카운트 어플 만들기(1)

안녕하세요. 하다블입니다. 열심히 코틀린을 익히고 있지만 그래도 조금씩 아는 것들로만 만들어보면서 익히는 연습을 하기 위해 간단한 어플을 만들어보려고 합니다. 숫자 카운트 어플을 만들어보려고 합니다. 숫자 카운트 어플이 뭐냐고 물어보신다면... 이 계수기라고 불리는 기계를 만들어보려고 합니다. 기본적으로 계수기는 1. 누르면 숫자가 1씩 올라간다. 2. 다이얼을 통해 초기화를 할 수 있다. 이 두 가지를 수행할 수 있어야 하므로 필수적으로 작업한 다음 이후 추가적인 기능을 넣어보고자 합니다. 먼저 구성입니다. XML의 코드는 다음과 같습니다. 숫자를 볼 수 있어야 하므로 textView를 상단중앙에 배치하였고 계수기의 기본적인 작업인 숫자를 +1 해주는 것과 초기화하는 것을 위해 버튼을 2개 넣어주었습니..

04. startActivityForResult를 대체하기 위한 registerForActivityResult

안녕하세요. 하다블입니다. 이전 코틀린 책을 보면서 공부를 하다 보니 막히는 부분이 종종 생겨 계속해서 기록하고자 합니다. 이번에는 화면 전환을 위한 함수, registerForActivityResult에 대해 알아보고자 합니다. 이전에는 startActivityForResult, onActivityResult를 사용했다고 하지만 deprecated 되었다고 합니다. kotlin-android-extensions를 viewbinding으로 변경했던 것처럼 이번 라이브러리 역시 다른 라이브러리로 변경해야 합니다. 그것이 registerForActivityResult입니다. onActivityResult는 다른 액티비티를 실행할 때 받은 request code를 통해 진행할 코드를 결정하는 메서드입니다. s..

03. 익명 함수, 람다식

안녕하세요. 하다블입니다. 오늘은 람다식 함수에 대해 기록해보고자 합니다. 익명 함수, 람다식은 "일급 객체"로서 함수가 갖는 특징 중 하나에 속합니다. 바로, 함수를 변수에 할당할 수 있다는 것입니다. 코틀린의 함수는 일급 객체에 속하며 오늘은 일급 객체에 대해서는 다루지 않으려고 합니다. 기본적으로 람다식의 기본 모양은 다음과 같이 생겼습니다. { /* 실행될 문장 */ } 중괄호 안에 간단한 문장이 들어가는 형식입니다. 예시를 들어 설명하겠습니다. val addFunc = { a:Int,B:Int ->a+b} val result = addFunc{30,20} println(result) //50 다음 코드처럼 변수에 함수를 할당해서 사용할 수 있습니다. 이때 addFunc에 들어간 형태를 람다식이라..

02. null,래핑,언래핑, 그리고 엘비스 연산자

안녕하세요. 하다블입니다. 이번에는 null과 엘비스 연산자에 대해 기록해보고자 합니다. 저의 첫 언어는 C언어였고 이후 C++을 통해 객체지향프로그래밍, 자료구조 등을 공부하였습니다. 그러다 보니 null과 pointer에 대한 골치아픔을 자주 겪었습니다. 하지만 Kotlin은 Java와 달리 NPE(Null Pointer Exception)을 제거하기 위해 기본적으로 변수에 null을 선언할 수 없다는 점이 신기하고 흥미롭게 다가왔습니다. null을 아예 쓸 수 없는 것은 아닙니다. 방식은 다음과 같습니다. var tmp:String = null //변수에 null을 기본적으로 사용할 수 없으므로 Error var tmp2:String? =null//변수 Type에 ?를 넣어 Nullable 변수로 ..

01. viewbinding + 이전 책들과 블로그 내용이 안 되는 이유

안녕하세요. 하다블입니다. 최근 코틀린을 공부하면서 C++, python을 공부할 때랑은 다른 몇 가지 재미있는 요소들이 있어 기록하고자 합니다. 하지만 그전에 중요한 부분을 먼저 포스팅하려고 합니다. 바로 시작하자마자 막히게 했던 viewbinding에 대한 이야기입니다. 코틀린을 공부하면서 가장 많이 막힌 부분은 바로 kotlin-android-extensions 라이브러리입니다... kotlin-android-extensions가 무슨 라이브러리인지 이해하기 위해서는 기본적인 코틀린 구동 방식에 대해 이해할 필요가 있습니다. 가장 중요한 포인트는 Kotlin은 프로그래밍 언어이지, 앱을 뚝딱 만들어내는 시스템이 아니라는 점입니다. 웹 프로그래밍(Frontend Backend)을 하신 분들은 아시겠지..

00. 컴공 3학년이 되어서 이제서야 Kotlin을 공부하는 이유

안녕하세요. 하다블입니다. 부끄럽지만 저는 컴퓨터공학과 3학년이지만 아직도 제대로 할 수 있는 기술조차 없을 정도로 형편없는 실력을 가지고 있습니다. 여전히 백준, 프로그래머스에서 중간~어려움 난이도는 손도 대지 못할 정도로 어려움을 느끼고 메인 언어라고 하기에도 집중적으로 개발해 본 적이 없으니 비전공자와 다를 바 없는 수준이라고 생각합니다. 그래서 지금이라도 "내가 나아가고 싶은 길을 정해야겠다!" 했고 왜 컴공으로 왔는 지를 곰곰이 생각해 보았습니다. 그 결과, 앱 개발자가 되어야겠다고 생각했습니다. 초등학교 시절, 스마트폰을 처음으로 볼 때의 충격이 아직도 느껴집니다. 스마트폰 이전에는 아이리버 mp3, 전자사전, 디지털카메라 등등 모든 것을 따로 들고 다녔는데 이 모든 걸 한 번에 해결함과 동시..

반응형