▼ 맥 homebrew 를 이용한 설치 ▼ Ubuntu 리눅스 에서 apt 를 이용한 설치 ▼ devices 명령으로 설치 확인
안드로이드에서 리스트 뷰를 생성할 때 Adapter를 통해서 데이터를 바인딩해서 생성하는 방법을 알아보았습니다. 이번에는 간단한 예제를 만들때 어댑터를 만들지 않고 XML을 구성하여 직접 리스트 뷰 entries 속성을 통해 바인딩하는 방법을 알아보도록 하겠습니다. res/values 에 새로운 파일을 추가해서 데이터를 XML로 구성합니다. name을 myarray로 지정합니다. LIST1 LIST2 LIST3 위에서 만든 XML 데이터를 바인딩하기 위해서 리스트 뷰 에 @array/myarray 로 android:entries 에 값을 대입합니다. MainActivity onCreate 함수에 리스트 뷰 이벤트만 추가해줍니다. override fun onCreate(savedInstanceState: ..
예전에는 안드로이드에서 뷰에 대한 참조를 하려면 findViewById를 사용해야 했습니다. 그런데 사용되는 XML의 참조 객체가 많아질 수록 사용하기 불편할 뿐더러 반복되는 코드가 지져분해지기 쉽습니다. Butter knife나 extension을 통해 불편함을 해소하긴 했지만 버전 3.6 이상 부터는 안드로이드 뷰 바인딩을 통해 좀 더 편리하게 뷰에 있는 객체에 참조할 수 있게 되었습니다. findViewById를 사용할 경우 단점 느린 속도 타입 캐스팅에 따른 예외 사용자 실수로 Null 참조 자동 생성되는 파일 만약 뷰 바인딩(View Binding)을 사용하게 된다면 다음과 같이 ViewBinding 을 구현하는 임의의 파일들이 생성됩니다. Activity 클래스와 매핑 되는 클래스로 별도로 작..
아이폰과 마찬가지로 모바일 환경에서 가장 많이 사용되는 형태의 UI가 리스트입니다. 안드로이드 리스트 뷰는 안드로이드에서 가장 많이 사용되는 컴포넌트 중에 하나로 다음과 같은 특징을 가지고 있습니다. 레이아웃과 같은 뷰 그룹에 속함 어뎁터(Adapter)를 통해 데이터와 리스트 뷰를 연결 오래전부터 사용 가능 했으며 API Level 1 부터 존재 프래그먼트를 사용할 경우 this 컨텍스트를 사용할 수 없기 때문에 getActivity() 함수를 사용 프래그먼트를 사용할 경우 LayoutInflater를 사용해 뷰를 가져옴 리스트 뷰 생성 아이디가 listview1 인 리스트 뷰를 선언한다. 데이터 정의 다음과 같이 데이터를 정의한다. class MainActivity : AppCompatActivity..
안드로이드나 iOS 개발은 사실 UI의 비중이 큽니다. 웹 프론트엔드 개발 보다 다양한 기술을 포함하긴 하지만 일단 화면을 잘 그릴 수 있어야 합니다. 때문에 안드로이드 앱 개발의 핵심 요소는 인터페이스 디자인과 생성이라고도 할 수 있습니다. 안드로이드의 화면 구성은 뷰와 뷰 그룹 그리고 레이아웃으로 이루어집니다. 뷰와 뷰 그룹 안드로이드 화면 인터페이스의 모든 컴포넌트는 View(android.view.View) 클래스의 서브 클래스입니다. 안드로이드는 TextView, Button, CheckBox 와 같은 여러가지 View의 서브 클래스를 제공합니다. 이런 뷰들을 위젯(Widget) 또는 컴포넌트(Component)라고 합니다. 또한 뷰를 서브클래싱 해서 새로운 위젯을 만들 수도 있으며 기존의 컴포..
안드로이드 앱 프로세스 안드로이드 앱은 프로세스로 실행되며 액티비티나 서비스 및 브로드캐스트 수신자 형태의 여러 컴포넌트로 구성됩니다. 모바일이라는 제한적인 환경에서 리소스를 효율적으로 관리하기 위해서는 특히 앱이 실행되는 프로새스와 앱을 구성하는 모든 컴포넌트의 생명주기를 잘 알고 관리해야 하며 앱과 액티비티 생명주기를 반드시 이해해야만 효율적인 앱을 만들 수 있고 앱이 실행하는 동안 다양한 상태와 이벤트에 맞춰서 프로그래밍할 수 있습니다. 안드로이드 우선순위 안드로이드 앱은 안드로이드 운영체제의 별개의 프로세스에서 독립적으로 실행됩니다. 때문에 만약 독립적인 안드로이드 앱이 메모리 한계에 다다를 경우 안드로이드 시스템은 메모리 확보를 위해서 해당 프로세스를 강제로 종료하는 방법을 취합니다. 메모리 확..
안드로이드 뷰 바인딩 이전 버전의 안드로이드 스튜디오에서는 코드에서 레이아웃 뷰를 사용하기 위해 findViewById() 함수 또는 코틀린 확장 플러그인을 사용했었습니다. 하지만 더 이상 추천하는 방법이 아니고 이제는 뷰 바인딩을 사용해서 레이아웃을 관리하는 형태로 변경되었습니다. 한 번 바인딩하게 되면 편리하고 다양하게 사용이 가능하니 뷰 바인딩을 사용하는 법과 findViewById 와 비교해서 무엇이 달라졌는지 확인해보겠습니다. ▼ 안드로이드 뷰 바인딩은 Android Studio 3.6 Canary 11 이상에서 동작합니다. 안드로이드 스튜디오 3.5 이전에는 뷰 바인딩을 사용할 수 없었고 아래와 같이 findViewById를 통해 컴포넌트들을 로드해서 사용했습니다. 뷰 바인딩 추가하기 ▼ 뷰 ..
안드로이드 앱은 다양한 요소가 결합되어 만들어집니다. 그중에 UI에 관련된 액티비티, 프래그먼트 등이 있고 인텐트와 액티비티를 이용해 독립적으로 실행 가능한 모듈을 생성해 재사용성을 높일 수 있다. 또한 콘텐츠 제공자를 구현해 앱 간 데이터 공유도 가능하다. 서비스와 브로드캐스트 수신자를 통해서 백그라운드 작업을 할 수 있으며 매니페스트 파일을 통해서 앱 구성을 정의할 수 있고 앱 리소스와 매니페스트 설정을 통해서 앱 컨텍스트를 만들어 낼 수 있다. 안드로이드 액티비티 안드로이드 앱은 액티비티라는 컴포넌트가 하나 이상 반드시 결합되어 생성됩니다. 액티비티란 안드로이드 앱을 구성하는 기본 단위이며 앱의 기능을 갖는 단일의 독립 실행 모듈입니다. 액티비티는 안드로이드 Activity 클래스의 서브 클래스로 ..
지난 시간에는 네비게이션 컨트롤러를 만들기 위해서 설정을 하고 디자인을 해봤습니다. 오늘은 코드를 작성해서 네비게이션 그래프를 잘 동작하도록 만들어보겠습니다. 안드로이드는 오랫동안 이어져온 v4, v7, v8, v17과 같은 서포트 라이브러리를 통해서 하위 호환을 지원했었는데 이런 오래된 구조를 재 정립하고자 Android extension library (Androidx) 기반의 패키지 구조를 만들게 되었으며 이것들은 모두 젯팩의 구성요소입니다. 다시 말해 서포트 라이브러리와 코틀린 지원 도구 및 여러 라이브러리가 포함된 통합 지원 라이브러리라고 할 수 있습니다. 젯팩 컴포넌트 구성 Architecture - 뷰를 포함한 UI 구성요소의 라이프 사이클 관리 및 LiveData와 뷰 모델, Room 데이..
저번 강좌에서 안드로이드 Jetpack 네비게이션 컨트롤러를 만들고 환경을 구성했었는데요. 이어 이번 시간에는 네비게이션 컨트롤러를 만들기 위한 디자인 작업을 해보도록 하겠습니다. 다음과 같은 구성으로 디자인이 됩니다. 사실 디자인이라고 보기는 어렵고 그냥 화면 구성이죠. 3개의 프레그먼트(Fragment)를 만들고 첫 번째 페이지는 메인 프레그먼트로 다음 페이지로 이동하는 기능만 있습니다. 두 번째 페이지는 다음 페이지로 이동하거나 뒤로 이동하는 기능이 있습니다. 다음 페이지로 이동할 때는 번들을 통해서 특정 값을 전달하는 내용도 포함됩니다. 세 번째 페이지는 다시 메인 프레그먼트 페이지로 이동하는 기능만 있으며 두 번째 페이지에서 전달받은 값으로 버튼의 텍스트를 변경합니다. 프레그먼트 생성 ▼ 새로운..
Google I/O 2018에서 발표한 안드로이드 Jecpack의 내비게이션 컨트롤러를 사용하는 방법을 알아보겠습니다. iOS 개발의 네비게이션 컨트롤러와 비슷하며 프래그먼트를 사용해서 오히려 iOS 보다 더욱 편리하게 이동이 가능해보입니다. iOS의 경우 특정 뷰 컨트롤러에 네비게이션 컨트롤러를 만들고 RootViewController로 설정해줘야 해서 객체가 하나 늘어나는 반면 안드로이드의 Jetpack 네비게이션의 경우 아주 간단히 프레그먼트들을 연결해서 사용할 수 있습니다. Navigation Components는 Jetpack의 Architecture에 속하는 라이브러리 중 하나이며, 오늘은 간단히 여러 프레그먼트의 네비게이션을 연결하고 이동하기 위한 Jetpack 설정에 대해서 알아보겠습니다...