안드로이드 소프트 키보드 숨기기
앱을 사용하다보면 사용자 텍스트 입력이 필요한 필드를 입력하다 필드 바깥쪽을 터치 시 소프트 키보드가 숨겨지는 모습을 볼 수 있다. 안드로이드의 경우 그런 동작이 EditText를 사용한다고 해서 자동으로 적용되지 않기 때문에 그것을 적용하는 방법을 작성해본다. 적용 전 <?xml version="1.0" encoding="utf-8"?> ...
앱을 사용하다보면 사용자 텍스트 입력이 필요한 필드를 입력하다 필드 바깥쪽을 터치 시 소프트 키보드가 숨겨지는 모습을 볼 수 있다. 안드로이드의 경우 그런 동작이 EditText를 사용한다고 해서 자동으로 적용되지 않기 때문에 그것을 적용하는 방법을 작성해본다. 적용 전 <?xml version="1.0" encoding="utf-8"?> ...
안드로이드에서 화면에 나타나는 UI 구성은 xml 파일에 담겨있다. 화면을 구성하는 레이아웃과 뷰는 xml에 정의돼있는데, 이를 코드 상에서 접근할 수 있게 만들어야 한다. inflate는 ‘부풀리다’라는 뜻을 갖고 있는데, xml에 정의된 뷰를 부풀려 객체화시키는 것을 뜻한다. //액티비티의 onCreate 콜백 class MainActivity ...
코틀린에는 객체의 context 내에서 코드 블록을 실행하기 위한 함수들이 있는데 이를 scope 함수라고 한다. Scope 함수에 람다 표현식을 전달하면 해당 코드 블록이 실행되며 이름 없이 객체에 접근할 수 있다. Scope 함수에는 let, run, with, apply, also가 있다. 기본적으로 이 함수들이 하는 역할 람다로 전달된 코드 ...
안드로이드 코드를 짜면서 by lazy, by viewModels()를 쓸 때 by라는 키워드를 사용했는데 이것이 어떤 역할을 하는지 작성해보려고 한다. 위임 패턴 객체가 요청을 다른 객체(helper object)에 위임해서 처리하는 패턴이다. class Rectangle(val width: Int, val height: Int) { fun...
배경 약 4개월 동안 네이버 커넥트재단에서 진행하는 부스트캠프 웹·모바일 6기 멤버십 과정을 마무리했다. 멤버십 과정의 마지막 6주동안 진행한 프로젝트 등산왕에 대한 정리를 하려고 한다. 앱 소개 깃헙 레포지토리 등산왕은 등산 기록 관리 앱이다. 앱에는 크게 세 가지 기능이 있다. 등산 기록 내가 개발을 맡은 실시간 등산 기록을 하는 기...
브로드캐스트 리시버는 안드로이드 4대 구성 요소 중 하나다. 브로드캐스트 리시버에 대해 이해한 것을 정리해보려 한다. 브로드캐스트란? 브로드캐스트는 방송이라는 뜻으로, 안드로이드에서는 publish-subscribe 패턴과 비슷한 느낌으로 브로드캐스트를 전송하고 수신할 수 있다. 브로드캐스트는 시스템 또는 사용자(개발자)가 전송할 수 있다. 시스템...
안드로이드 개발을 공부하며 서비스를 처음 마주했을 때 느낀 당황함은 적지 않았다. 액티비티와 프래그먼트만 다루고 있었는데, 눈에 보이지도 않는 것이 생명 주기는 액티비티에 종속돼있지 않으면서도 일을 할 수 있다는 것이 참 낯설었다. 지금까지 이해한 서비스의 개념을 정리하고자 한다. 서비스란? 서비스는 백그라운드에서 오래 실행되는 작업을 위한 앱 구성 ...
Intent란? Intent는 앱 구성 요소 간 정보를 전달할 수 있는 메시지 객체다. 안드로이드 앱의 4대 구성 요소는 다음과 같다. 액티비티 서비스 브로드캐스트 리시버 콘텐츠 제공자 이들 간 정보를 전달할 수 있으며 예제는 다음과 같다. 액티비티 시작 class MainActivity : AppCompatActivity() ...
안드로이드 개발 공부를 늦게 시작하여 코틀린으로 했지만, 코틀린 이전의 코드들은 전부 자바 코드여서 자바도 어느 정도 이해를 하고 있어야 한다. 비슷한 두 언어 자바와 코틀린의 공통점과 차이점을 몇가지 정리해보려 한다. 공통점 JVM JVM(Java Virtual Machine)은 자바를 구동하는 가상 머신이다. 자바와 코틀린 모두 컴파일러가 JVM...
개요 프래그먼트는 UI의 재사용 가능한 부분을 나타낸다. 프래그먼트는 독립적으로 존재할 수 없고 액티비티 또는 다른 프래그먼트를 호스트로 하여 존재해야 한다. 프래그먼트는 액티비티와 마찬가지로 자체 생명 주기를 가지고 자체 입력 이벤트를 처리할 수 있다. 또한 액티비티와 마찬가지로 XML 파일로 레이아웃을 정의한다. FragmentManager 액티비...