본문 바로가기

내맘대로AndroidView

[Android/Kotlin] 커스텀 달력 만들기 이전 글의 Infinite Loop ViewPager2를 이용해서 캘린더 화면을 만들어보려고 한다. 화면을 뜯어보면 이런 식이다. 1. MainActivity에 FragmentStateAdapter를 이용한 ViewPager2(Horizontal) + TabLayout를 적용하여 앱을 Tab형식으로 사용 2. 첫번째 Tab인 FirstFragment에 ViewPager2(Vertical)를 추가하고 수직방향으로 넘기는 캘린더 화면(CalendarFragmet)을 넣어 사용 MainActivity 위에 FirstFragment가 있고 그 위에 CalendarFragment가 올라간 꼴이다. 1. CalendarFragment 추가 이제 달력을 보여줄 Fragment를 추가한다. 레이아웃은 최상단에 년, 월.. 더보기
[Android/Kotlin] ViewPager2 - Infinite Loop 이 글에서는 어떻게 무한로딩 ViewPager2를 만드는지, Infinite Loop ViewPager2를 만드는 방법에 대해 다룰 것이다. 말만 확장이지 일반적인 ViewPager2와 별 차이 없고 약간의 트릭으로 무한 루프처럼 보이게 할 뿐이다. 1. FragmentStateAdapter 추가 위에서 말했듯이 약간의 트릭으로 무한 루프처럼 보이게 만들어야 한다. Adapter를 붙일 때 fragment의 수를 엄청 많이 만들어서 사용자가 페이지를 아무리 넘겨도 끝이 없는 것처럼 만드는 방법이다. 찝찝하지만 며칠동안 찾아본 예제 중에 내가 원하는대로 작동하는 예제는 이것밖에 없는 것 같다. FragmentStateAdapter에서 getItemCount()의 반환값을 Int.MAX_VALUE로 지정해서.. 더보기
[Android/Kotlin] ViewPager2 - FragmentStateAdapter 사용하기 (with TabLayout) 이전 글에서 RecyclerView.Adapter을 이용하여 ViewPager2를 만드는 방법에 대해 알아봤다. 이번에는 FragmentStateAdapter를 이용하여 ViewPager2를 만들고 TabLayout을 붙여보려고 한다. ViewPager에서 봤듯 FragmentStatePagerAdapter는 deprecated 되었으며 FragmentStateAdapter 로 대체되었다. FragmentStatePagerAdapter -> FragmentStateAdapter PagerAdapter -> RecyclerView.Adapter addPageChangeListener -> registerOnPageChangeCallback 때문에 FragmentStatePagerAdapter와 비슷하게 작.. 더보기
[Android/Kotlin] ViewPager2 - RecyclerView.Adapter 사용하기 이전 글에서 ViewPager를 다뤘었다. 이번엔 ViewPager의 업그레이드 버전인 ViewPager2에 대해 다루려고 한다. ViewPager2는 RTL(Right-to-Left) 수직 방향(Vertical Orientation) 수정 가능한 Fragment Collection 등을 지원한다고 한다. ViewPager2에서는 붙이는 Adapter에 따라 형태가 달라진다. FragmentStateAdapter를 붙이면 기존 ViewPager와 같은 방식으로 만들 수 있고 RecyclerView.Adapter를 붙여 ViewPager와 RecyclerView가 혼합된 방식으로 만들 수 있다. 우선 RecyclerView.Adapter를 이용하여 ViewPager2를 만드는 방법에 대해 정리한다. 1. .. 더보기
[Android/Kotlin] ViewPager 사용하기 Android에서 SwipeView 기능을 하는 것으로 ViewPager가 있다. 화면을 Swipe하여 슬라이드 효과를 주면서 화면을 전환할 수 있다. 2019년 구글에서 ViewPager2를 내놓았으며 당연하게도 기존 ViewPager보다는 ViewPager2를 권장하고 있다. AndroidX로 넘어가면서 뭔가 많은 변화가 있었는데 그런 이유들 때문인 것 같다. (한 예로 newInstance()를 이용해서 Fragment를 생성하면 빈 생성자를 만들어 bundle을 이용하여 데이터를 전달하는 방식으로 데이터를 유지했는데 FragmentFactory가 생겨나면서 Kotlin에서는 아예 class SomeFragment(private val str: String) : Fragment() { } 이런식으로.. 더보기
[Android/Kotlin] Fragment에 대하여 이번에는 거의 대부분의 Android 앱에서 사용하는 Fragment에 대해 정리하려고 한다. 우선, Android 앱을 만드는 데에 기초적인 페이지의 역할을 하는 Activity와 Fragment가 있다. 아래는 Activity와 Fragment의 대표적인 특징이다. Activity는 Android Application의 기본 구성단위로 사용자가 앱에 접근하도록 해주는 일종의 페이지이다. Acticity없이는 앱을 사용할 수 없으며 하나의 Activity는 있어야 앱을 사용할 수 있다. Fragment는 항상 Activity 내에서 호스팅 되어야 하며 Activity에 종속적인 생명주기를 가진다. 때문에 Fragment는 Activity의 모듈과 같이 사용되어야 하며, 하나의 Activity는 여러 개.. 더보기
[Android/Kotlin] ScrollView 사용하기 ScrollView 사용하는 방법에 대해 정리한다. 기본적으로 ScrollView를 포함하고 있는 View를 제외하고 Scrollable한 화면은 필수적으로 ScrollView를 사용해야한다. 첫번째로 이런 화면을 만들어 보려고 한다. 1. ScrollView, Button 추가 나는 ConstraintLayout이 편해서 Root layout을 ConstraintLayout으로 지정했다. 여기에 ScrollView를 추가한다. 아래 그림과 같이 ScrollView 내부에 LinearLayout을 추가하고 추가된 LinearLayout 안에 보여주고 싶은 Contents들을 넣어 사용한다. 우선 ScrollView와 하단 버튼을 추가한다. fragment_scroll_view.xml 1 2 3 4 5 6.. 더보기
[Android/Kotlin] 리스트 만들기 (with RecyclerView) 리스트는 앱에서 가장 필수적으로 필요한 기능이다. 6년 전, 처음 안드로이드 앱을 만들었을 때는 TableLayout을 이용해서 리스트를 만들었다. 이번에 다시 찾아보니 RecyclerView라는게 있었고 둘의 차이는 간단하게 TableLayout은 고정된 row와 column을 이용하여 리스트를 만들고 RecyclerView는 Adapter(와 ViewHolder)를 이용하여 리스트를 만든다. RecyclerView는 더욱 발전된 형태로 dynamic하게 item을 쉽게 추가하고 삭제할 수 있고 내부 item을 자유롭게 만들 수 있기 때문에 TableLayout보다는 RecyclerView를 많이 쓰이는 것 같다. Adapter와 ViewHolder를 이용하여 RecyclerView를 만들어 본다. 1.. 더보기