본문 바로가기

깡샘 코틀린69

13-3 액티비티 제어 소프트 키보드 제어하기 시스템에서 제공하는 키보드(소프트 키보드)는 액티비티 화면에서 사용자가 글을 입력할 수 있는 뷰가 포커스를 가지는 순간 자동으로 올라온다. 그리고 사용자가 뒤로가기 버튼을 누르면 뷰가 자동으로 사라진다. 입력 매니저 그런데 때로는 코드에서 특정한 순간에 키보드를 올리거나 내려야 할 수도 있다. 이를 InputMethodManager 클래스가 지원한다. public boolean hideSoftInputFromWindow(IBinder windowToken, int flags) public boolean showSoftInput(View view, int flags) public void toggleSoftInput(int showFlags, int hideFlags) InputMe.. 2023. 7. 1.
13-2 액티비티 생명주기 액티비티의 상태 액티비티의 생명주기를 이해하고 각 상황에 적절하게 대처할 수 있어야 한다. 생명주기(life cycle)이란 액티비티가 생성되어 소멸하기까지의 과정을 말하며, Activity 클래스는 액티비티가 상태 변화를 알아차릴 수 있는 여러가지 콜백 함수를 제공한다. 이 콜백 함수에 액티비티의 상태가 바뀔 때마다 앱이 어떻게 동작해야 하는지를 구현한다. 액티비티의 상태는 다음처럼 크게 3가지로 구분할 수 있다. 활성: 액티비티 화면이 출력되고 있고 사용자가 이벤트를 발생시킬 수 있는 상태 일시 정지: 액티비티의 화면이 출력되고 있지만 사용자가 이벤트를 발생시킬 수 없는 상태 비활성: 액티비티의 화면이 출력되고 있지 않는 상태 활성 상태 액티비티가 실행되어 화면에 나오고 사용자 이벤트를 처리할 수 있.. 2023. 7. 1.
13-1 인텐트 이해하기 01-02장 안드로이드 앱 개발 준비하기 03-05장 코틀린 이해하기 06-10장 앱의 기본 기능 구현하기 11-12장 구글의 라이브러리로 화면 구성하기를 거쳐왔다. 13~16장에서는 컴포넌트를 다룰 것이다. 안드로이드 앱은 액티비티, 브로드캐스트 리시버, 서비스, 콘텐츠 프로바이더 등 4개의 컴포넌트를 기반으로 개발한다. 지금까지 살펴본 액티비티를 제대로 개발하려면 인텐트의 원리와 액티비티의 생명 주기를 이해해야 한다. 그리고 액티비티 이외에 나머지 컴포넌트도 알아야 한다. 컴포넌트 작성 방법과 동작 원리를 알아볼 것이다. 13장의 주제는 액티비티이다. 액티비티는 안드로이드 앱에서 화면을 구성하는 컴포넌트이다. 액티비티의 화면 구성 방법 이외에 동작 방식 등을 구체적으로 알아야 제대로 액티비티를 이해하.. 2023. 6. 30.
12-4 확장된 플로팅 액션 버튼 확장된 플로팅 액션 버튼(ExtendedfloatingActionButton)은 화면에 떠 있는 듯한 버튼을 제공하는 뷰이다. 머티리얼 라이브러리가 처음 나왔을 때는 플로팅 액션 버튼(FloatingActionButton)을 제공했지만, 지금은 버튼에 문자열까지 출력할 수 있는 확장된 플로팅 액션 버튼도 제공한다. // 확장된 플로팅 액션 버튼 // 아이콘 지정 확장된 플로팅 액션 버튼의 icon 속성으로 이미지를 지정하면 이 이미지를 포함해 화면에 떠 있는 듯한 버튼이 출력된다. 그리고 text 속성으로 문자열을 지정하면 이미지와 함께 출력된다. 만약 text 속성을 지정하지 않고 icon 속성만 지정하면 둥근 모양으로 나온다. 그리고 코드에서 문장까지 나오게 확장하거나 아이콘만 나오게 축소하는 등 버.. 2023. 6. 30.
12-3 내비게이션 뷰 - 드로어 화면 구성 11장에서 androidx 라이브러리의 드로어 레이아웃을 살펴봤다. 처음엔 안 보이던 화면이 옆에서 끌려 나오면서 출력되는 기능이다. 이때 끌려나오는 화면을 어떻게 구성할지는 개발자 마음인데 대부분 앱에서는 다음과 같이 구성한다. (책 이미지) 화면의 위쪽은 아이콘과 문자열 등을 배치했고 아래쪽은 메뉴항목을 나열했다. 만약 이런 모양으로 출력하려면 내비게이션 뷰(NavigationView)를 이용해야 한다. 내비게이션 뷰는 드로어 레이아웃으로 열린 화면에 출력되는 내용을 구성할 때 사용하는데, 보통은 메뉴 항목을 나열하는 형태로 구성한다.(androidx 라이브러리의 드로어 레이아웃은 드로어 화면이라는 '기능'을 담당하고 내비게이션 뷰는 그 화면의 '구성'을 담당한다. 12장의 머티리얼 라이브러리는 '디.. 2023. 6. 30.
12-2 탭 레이아웃 - 탭 버튼 구성 탭 레이아웃은 탭(tab)으로 구분하는 화면에서 탭 버튼을 배치하는 레이아웃이다. 탭 버튼을 다양하게 표시하고자 사용하는 뷰이다. 구글 플레이 스토어를 들어가보면 탭이 적으면 그냥 나열되는데 탭이 많으면 옆으로 스크롤 해서 볼 수 있다. 탭 버튼이 많으면 이처럼 스크롤되게 제공해야 한다. 탭버튼을 가로등분으로 제공할수도 있다. 이런 설정들을 탭 레이아웃을 통해 출력한다. // 탭 레이아웃 등록 위 코드는 탭 화면을 만드는 레이아웃 XML 파일이다. TabLayout과 FrameLayout을 선언했다. 사용자가 TabLayout으로 구성한 탭 버튼을 선택하면 FrameLayout 위치에 탭의 내용을 출력한다. // 코드에서 탭 버튼 정의 val tab1: TabLayout.Tab = tabLayout.ne.. 2023. 6. 30.
12-1 앱바 사용하기 머티리얼 디자인은 구글의 디자인 지침이다. 그리고 이 디자인 지침에 맞게 앱을 만드는 여러가지 뷰를 라이브러리로 제공한다. 12장에서는 머티리얼 라이브러리에서 자주 사용하는 앱바 레이아웃, 탭 레이아웃, 내비게이션 뷰, 확장된 플로팅 액션 버튼 등을 소개한다. 상용 수준의 앱을 개발하고자 한다면 11장에서 살펴본 제트팩의 androidx와 마찬가지로 머티리얼 라이브러리도 잘 정리해둬야 한다. 머티리얼 라이브러리란? 구글의 머티리얼 디자인(material design)은 모바일과 데스크톱, 그리고 그 밖에 다양한 장치를 아우르는 일관된 애플리케이션 디자인 지침이다.(androidx는 기능 위주고 머티리얼은 디자인 중점인듯) 그림자 효과나 물결 모양 효과 등 다양한 뷰를 필요로 하는 효과들을 구현할 수 있도.. 2023. 6. 30.
11-6 드로어 레이아웃 - 옆에서 열리는 화면 구성 드로어 레이아웃(DrawerLayout)은 액티비티 화면에 보이지 않던 내용이 왼쪽이나 오른쪽에서 손가락의 움직임에 따라 밀려나오는 기능을 한다. androidx의 라이브러리인 드로어 레이아웃은 마치 서랍(drawer)처럼 열리는 메뉴를 구성할 때 사용한다. ex. 카카오맵(지금은 업뎃돼서 바뀌었나?) 화면 왼쪽을 탭해서 오른쪽으로 밀면 목록으로 구현된 화면이 나온다. 더보기 (개정판 삭제) 드로어 레이아웃을 사용하려면 그래들 파일의 dependencies 항목에 다음처럼 선언해야 한다. // 드로어 레이아웃 선언 implementation 'androidx.drawerlayout:drawerlayout:1.1.1' 드로어 레이아웃을 액티비티에 적용하려면 액티비티의 레이아웃 XML 파일 구성이 중요하다... 2023. 6. 29.
11-5 뷰 페이저2 - 스와이프로 넘기는 화면 구성 뷰 페이저(ViewPager)는 스와이프(손가락으로 화면을 탭하여 오른쪽이나 왼쪽으로 미는) 이벤트로 화면을 전환할 때 사용한다. ex. 인스타그램 뷰 페이저는 플랫폼 API에서 제공하지 않으므로 androidx 라이브러리를 이용해 개발해야 한다. 2019년에 뷰 페이저 대신 뷰페이저2가 나왔다. 더보기 (개정판 삭제 내용) 뷰 페이저2를 이용하려면 그래들 파일의 dependencies 항목에 다음과 같이 설정해야 한다. // 뷰 페이저2 선언 implementation 'androidx.viewpager2:viewpager2:1.0.0' // 뷰 페이저2 라이브러리 추가 뷰 페이저2는 화면을 항목으로 본다. 각 항목이 순서대로 나열되어 있는데 단지 한 화면에 항목 하나가 나온다는 개념이다. 따라서 리사.. 2023. 6. 29.
11-4 리사이클러 뷰 - 목록 화면 구성 리사이클러 뷰 기초 사용법 리사이클러 뷰는 목록 화면을 만들 때 사용한다. RecyclerView 클래스만으로는 화면에 아무것도 출력되지 않는다. 다음과 같은 구성 요소가 필요하다. ViewHolder(필수): 항목에 필요한 뷰 객체를 가진다. Adapter(필수): 항목을 구성한다. 뷰 홀더에 있는 뷰 객체에 적절한 데이터를 대입해 항목을 완성한다. LayoutManager(필수): 항목을 배치한다. 어댑터가 만든 항목들을 어떻게 배치할지 결정하여 리사이클러 뷰에 출력한다. ItemDecoration(옵션): 항목을 꾸민다. 예를 들어 카카오톡 채팅방 목록 화면을 리사이클러 뷰로 만든다 할 때, 뷰 홀더는 각 뷰가 들어갈 자리? 틀? 느낌이고, 어댑터는 각각의 뷰에 이미지뷰, 텍스트 뷰 등등 어떤거 들.. 2023. 6. 29.