목록Programming/Kotlin - Android (39)
외로운 Nova의 작업실
- 내비게이션 뷰 드로어에는보통 메뉴항목을 나열하는 형태로 구성합니다. 그리고 메뉴를 클릭했을때 이벤트를 처리하게됩니다. 이러한 부분을 쉽게 구현하기위해 안드로이드x는 내비게이션뷰를 제공해줍니다. 네비게이션 뷰의 구성은 아래와 같습니다. - activity_main.xml 드로어 레이아웃을 잡아주시고 첫번째태그(본 화면에 나올 화면)는 이전에 탭화면을 구성한 화면으로 놔두고 두번째 화면(드로어 화면)은 navigation_header와 menu를 따로 xml파일을 만들어 연결해주었습니다. - navigation_headere.xml - menu_navigation.xml - MainActivity.kt 이전에 탭화면과 같이 드로어를 구성했습니다. 드로어 아이템 클릭시 콜백함수는 setNavigationI..
- 탭 레이아웃 탭 레이아웃은 탭으로 구분하는 화면에서 탭버튼을 배치하는 레이아웃입니다. 이러한 탭부분을 손쉽게 만들어주는 레이아웃이 바로 탭 레이아웃입니다. 탭 레이아웃은 동적으로 만들려면 kt 코드부분에서 tab을 추가하는 코드를 만들어야합니다. 하지만 정적으로 만들어도된다면 xml파일로 만들 수 도 있습니다. - 메인 액티비티.xml 탭과 화면 구성 메인액티비티.xml과 화면은 간단하게 구성하였습니다. - 메인 액티비티.kt 구성 탭화면 전환은 프래그먼트를 사용사용하여 구성하였습니다. 이는 저번에 만들어둔 것을 사용한 것으로 궁금하시다면 프래그먼트 편을 참고부탁드립니다. 관련 내용은 주석으로 달아놨습니다. package com.example.test import android.os.Bundle im..
- 머터리얼 라이브러리 머터리얼 라이브러리란 애니메이션을 넣어 아름답고 직관적인 경험을 사용자에게 선사하는 라이브러리입니다. 포인트는 애니메이션입니다. - 앱바와 코디네이터 뷰를 사용하여 스크롤 연동하기 애니메이션중 하나인 스크롤을 머터리얼 라이브러리를 사용해서 연동해보겠습니다. 예를들어 유튜브의 경우에 가로로 보는 영상을 하나 틀고 아래 관련동영상 부분을 스크롤하게되면 영상은 가만히 있고 아래쪽만 스크롤되게됩니다. 이때는 스크롤이 연동되지 않은 상태입니다. 하지만 유튜브 컨텐츠중 세로로보는 영상이라면 아래 관련 동영상 부분을 스크롤하게되면 영상도 올라가게됩니다. 이때를 스크롤이 연동되었다고 말합니다. 보통 어플을 만들때 앱바를 많이들 사용합니다. 앱바는 위쪽의 꾸밀 수 있는 영역을 의미합니다. 유튜브에..
- 드로어 레이아웃 드로어 레아이웃은 액티비티 화면에 보이지 않던 내용이 왼쪽이나 오른쪽에서 손가락의 움직임에 따라 밀려 나오는 기능을 말합니다. 드로어 레이아웃의 특징은 xml에 드로어 레이아웃 태그안에 첫번째 태그는 화면에 그냥 보여주고 두번째 태그는 스와이프를 해야 밀려나오게합니다. 따라서 드로어 레이아웃을 만들때는 그 안에 태그가 2개 있어야합니다. - 그래들 파일에 드로어 레이아웃 선언 implementation "androidx.drawerlayout:drawerlayout:1.1.1" - 메인 액티비티.xml 이제 메인액티비티.xml에 드로어 레이아웃 자리를 만들어줍니다. 보통 최상위에 두어서 드로어가 전체화면에서 나오게 만듭니다. 또한 드로어 레이아웃 안의 첫번째 태그와 두번째태그를 적절히..
- 뷰페이저2 뷰페이저는 스와이프 이벤트로 화면을 전환할때 사용합니다. 개발자들은 오랫동운 뷰페이저를 사용했지만 2019년부터는 뷰페이저2를 제공했습니다. 뷰페이저2가 기능이 더 많습니다. 따라서 뷰페이저2를 사용하겠습니다. 프래그먼트를 활요해 뷰페이저를 만들어보겠습니다. - 뷰페이저 선언 그래들 파일에 아래와 같이 선언해줍니다. implementation 'androidx.viewpager2:viewpager2:1.0.0' - 메인액티비티.xml에 뷰페이저가 들어갈 자리 만들어주기 메인액티비티.xml에 viewpager태그를 사용해서 자리를 만들어줍니다 - 프래그먼트 xml 만들어주기 뷰페이저에 들어가 프래그먼트 xml을 만들어주겠습니다. 이름은fragement1.xml fragment2.xml fra..
- 리사이클러 뷰 일반적으로 앱을 사용하다 보면 여러가지 항목을 나열하는 목록 화면이 많다는 것을 알 수 있습니다. 리사이클러 뷰는 이러한 목록 화면을 만들때 사용합니다. 아래와 같은 상황을 말합니다. 리사이클러 뷰는 뷰 홀더라는 틀을 만들고 그 틀에 어댑터가 값을 넣어주고 이후 레이아웃매니저가 여러개 배치해주는 순서로 진행됩니다. 하나씩 만들어보겠습니다. - 리사이클러 뷰 선언 먼저 리사이클러를 사용하겠다고 그래들 파일에 선언해줘야합니다. implementation 'androidx.recyclerview:recyclerview-selection:1.1.0' - 리사이클러를 메인 xml에 등록 메인 xml에 키사이클러 태그를 사용하여 들어갈 자리를 정해줍니다. - 리사이클러의 틀을 xml로 만들기 이제..
- 프래그먼트 프래그먼트란 액티비티 화면을 구성하는 뷰입니다. 프래그먼트가 다른 뷰와 다른점은 액티비티 처럼 동작한다는 것입니다. 프래그먼트는 아래와 같이 사용됩니다. 프래그먼트는 아래와 같이 구현됩니다. - 프래그먼트 구현 먼저 프래그먼트를 사용하겠다고 그리들 파일에 선언해줘야합니다. dependencies { ... implementation 'androidx.fragment:fragment-ktx:1.5.5' } 이제 프래그먼트를 만들어보겠습니다. 프래그먼트의 xml을 먼저 만들어주겠습니다. 아래는 fragement1.xml입니다. 위와 같은 프래그먼트를 2개 더 만들어 줍니다. 이름은 fragment2.xml fragement3.xml입니다. 이제 프래그먼트를 화면에 띄우는 kt파일을 만들어줍니다..
- 제트팩 제트팩이란 안드로이드 플랫폼이 기본적으로 제공하는 플랫폼 API외에 따로 추가된 라이브러리입니다. 플랫폼 API란 android.App.Activity와 같은것입니다. 제트팩은 androidx로 시작하는 패키지명을 사용합니다. 제트팩은 크게 다음 3가지 목적으로 제공됩니다. 앱을 개발하는 데필요한 권장 아키텍처를 제공합니다. API레벨의 호환성 문제를 해결합니다. 플랫폼 API에서 제공하지 않는 다양한 기능을 제공합니다. 호환성 문제를 해결해주기때문에 플랫폼 API에서 지원하는 것을 제트팩에서도 지원한다면 제트팩을 많이 사용합니다. 제트팩의 화면 구성과 관련된 라이브러리를 소개하면 다음과 같습니다. androidx.appcompat : 앱의 API 레벨 호환성을 해결합니다. androidx.r..
- 소리 알림 사용자에게 짧은 소리로 특정한 상황을 알리때가 있습니다. 대표적으로 문자앱에서 새로운 메시지를 전달받으면 사용자 알림 효과로 짧은 소리를 이용해 알려줍니다. 이런 목적으로 사용하는 짧은 소리를 알림음이라고 합니다. 알림음은 녹음한 음원을 쓸 수도 있지만 안드로이드 시스템에 등록된 소리를 이용할 수 있습니다. 안드로이드시스템은 알림(notification), 알람(alarm), 벨소리(ringtone)등의 소리를 제공하며 이소리는 RingtonManager로 얻을 수 있습니다. class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInsta..
- 토스트 메시지 띄우기 토스트는 화면 아래쪽에 잠깐 보였다가 사라지는 문자열을 의미합니다. 토스트는 Toast의 makeText()함수로 만듭니다. open static fun makeText(context: context!, txt: charsequence!, duration: Int): Toast! open static fun makeText(context: context!, resId: Int, duration: Int): Toast! val toast = Toast.makeText(applicationContext, "해당 권한을 허용해주셔야 앱 사용이 가능합니다.", Toast.LENGTH_SHORT). 토스트 메시지가 사라질때 혹은 나타날때 반환되는 콜백함수를 추가할 수 도 있습니다. 이는 ..