Android/Android UI 6

[안드로이드] ViewPager2

프로젝트를 하다가 간만에 Viewpager 를 쓸일이 생겼다. 뷰페이저 자체가 예전부터 있었다보니 여러가지 방법으로 구현하는 방식이 있는데 이번에 나는 ViewPager2 와 FragmentStateAdapter 를 이용해서 만들어 보기로 했다. 먼저 ViewPager 가 지원중단되고 ViewPager2 로 몇년전에 넘어가게 됐는데 알아보는김에 왜 바뀌게 됐는지도 한번 알아보자. 대표적인 ViewPager 의 문제는 1. 리사이클러뷰에 뷰페이저를 집어 넣을때 발생한다. 뷰페이저는 PagerAdapter 기반으로 구성됐는데 스크롤을 할때마다 instantiateltem() 과 destroyItem() 메소드가 호출되면서 스크롤이 버벅거리는 문제가 있었다. * instantiateltem() : 화면에 표시..

Android/Android UI 2023.02.01

splahScreen 안드로이드 12 버전에 적용하기

최근 Dev6 프로젝트를 새로 개발하면 스플래시 스크린을 만들일이 생겼다. 이번에 스플래시 스크린을 만들면서 안드로이드 12 부터 바뀐 스플래시 스크린을 적용해보며 정리하는 글이다. 먼저 라이브러리를 추가하자. dependencies { implementation 'androidx.core:core-splashscreen:1.0.0-beta01' } 위 처럼 스플래시 스크린 라이브러리를 import 해준다. 이 라이브러리를 사용하려면 minSdk 는 21이상 , targetSdk 는 31 이니 참고하자. themes.xml 에 스플래시 스크린 테마를 추가하자. 이렇게만 보여주면 뭐가 무슨 옵션인지 찾아보기 귀찮으니 몇개 적어보자. windowSplashScreenBackground: splashscree..

Android/Android UI 2023.01.14

include layout 의 viewBinding id 참조하기

xml 에 다른 xml 파일을 include 하여 해당 xml에 포함되게 사용할수가 있는데 이때 그냥 해당 액티비티의 id로 view binding 을 하면 참조가 되지 않는다. 이때는 private lateinit var exampleBinding: InclueTopBinding exampleBinding = InclueTopBinding.inflate(layoutInflater) exampleBinding.tvLeft.setOnClickListener { findNavController().popBackStack() } include_top.xml 을 binding 했다. InclueTopBinding 은 해당 include xml 을 바인딩 한 것 tvLeft 는 include_top.xml 에 있..

Android/Android UI 2022.07.28

안드로이드 action mode

안드로이드에서 Text를 Select 즉 드래그 했을때 나오는 툴들을 변경하고 싶을때가 있다. 예를 들면, 이런식으로, Important를 꾹~ 눌려서 (Long press) Text를 Select한 뒤에 나오는 메뉴에서 '퀵번역'을 추가 하고 싶을 수 있다. 이런걸 구현하려고 하면 간단하게 함수 하나만 override하면 된다. @Override public void onActionModeStarted(final android.view.ActionMode mode) { Menu menu = mode.getMenu(); menu.add("퀵번역") .setEnabled(true) .setVisible(true) .setOnMenuItemClickListener(item -> { //해당 메뉴를 눌렸을 때..

Android/Android UI 2022.01.11

안드로이드 - BottomSheet , BottomSheetBehavior

간혹 앱을 사용하다보면 위아래로 슬라이드 하면서 크기가 늘어났다가 줄어들었다가 하는 화면을 찾아 볼 수 있다. 이런 화면들 말이다. 밑의 레이아웃을 위로 당기면 높이가 늘어나고 내려도 다 사라지지는 않고 남아있는 형태의 sheet. 이런걸 만들고 싶었는데 어떻게 하면 좋을지 고민하다가 한번 만들어봤다. 언제나 그렇듯 코드로 알아보자. CoordinatorLayout 이라는게 눈에 띈다. CoordinatorLayout 은 FrameLayout 같이 좌표를 자유롭게 지정 가능하다. 한개의 parent 아래 포함된 여러개의 child view 를 behavior 라는 것을 이용해서 다양한 애니메이션 효과를 표현해 낼 수 있다. 라고 간단하게 설명가능하다 . 나처럼 바텀시트에 사용할 수도 있고 , 밑으로 스크..

Android/Android UI 2021.08.31