Kotlin42 [Android] ViewPager2로 TabLayout 구성하기 한 화면에 여러 콘텐츠를 보여주기 위해 다양한 앱에서 TabLayout과 ViewPager를 사용한다. 이 두 가지 기능을 사용하면 탭을 클릭하거나 스와이프를 하여 콘텐츠를 변경할 수 있다. TabLayoutMediator를 사용하여 해당 기능을 구현해 보려고 한다. 예제로 4개의 탭에 각 탭을 구분할 수 있도록 '첫번째' ~ '네번째'라고 텍스트가 적힌 프로젝트를 만들어봤다. TabLayout 설정 /** * TabLayout 설정 */ private fun faqTabInit() { TabLayoutMediator(mBinding.tabMain, mBinding.vpMain) { tab, pos -> tab.text = pos.toString() when (pos) { 0 -> tab.text = g.. Android/TabLayout 2022. 11. 21. [Android] Fragment 하나로 TabLayout 구성하기 보통 TabLayout을 사용할 때 ViewPager를 쓰곤 하는데, ViewPager를 사용하려면 노출할 화면 수만큼 Fragment를 만들어야 한다. 그런데 각 화면들의 구성이 똑같다면 굳이 여러 개의 Fragment를 만들지 않고 하나의 Fragment를 재활용하는 것이 낫다고 생각했다. 탭을 클릭했을 때 beginTransaction으로 Fragment을 생성하고 데이터만 바꿔주면 된다. 예제로 4개의 탭에 각 탭을 구분할 수 있도록 '첫번째' ~ '네번째'라고 텍스트가 적힌 프로젝트를 만들어봤다. TabLayout에 탭 세팅 mBinding.tabMain.addTab(mBinding.tabMain.newTab().setText("첫번째")) mBinding.tabMain.addTab(mBindi.. Android/TabLayout 2022. 11. 20. [Android] RecyclerView Drag and Drop 구현하기 RecyclerView에서 Drag and Drop을 사용하려면 ItemTouchHelper를 사용해야 한다. ItemTouchHelper는 RecyclerView에 Drag and Drop과 Swipe를 지원하는 유틸리티 클래스다. ItemTouchHelper 객체를 RecyclerView에 연결하고 interface에 정의한 drag 관련 메서드들을 override하여 Drag and Drop을 할 수 있다. Interface 정의 // Adapter에서 사용할 interface interface ItemMoveListener { // Drag 처리를 위한 메서드 fun onItemMove(fromPosition: Int, toPosition: Int): Boolean // Drop 처리를 위한 메서.. Android/RecyclerView 2022. 11. 18. [Android] SharedPreferences에 ArrayList로 저장하기 안드로이드에서 가벼운 데이터를 저장하기 위해 SharedPreferences를 사용하곤 한다. ShardPreferences는 key-value 형태로 기기에 데이터를 저장된다. value에는 String, Int, Boolean과 같은 자료형들을 담을 수 있다. 그러면 list(array)의 경우 어떻게 해야 할까? list를 json 형식의 string으로 변환하여 저장하고, 사용할 때는 json 형식의 string을 list로 변환하여 사용해야 한다. 이 동작을 Gson 라이브러리를 통해 쉽게 할 수 있다. SharedPreferences에 ArrayList로 데이터 저장하기 EditText에 텍스트를 입력을 완료하면 현재 날짜와 입력한 텍스트를 ArrayList로 변환하여 기기에 저장하려 한다. .. Android/SharedPreferences 2022. 11. 16. [Android] 카메라 캡처(촬영)하기 - CameraX ˙ ImageCapture [Android] 카메라 미리보기 - CameraX · PreviewView 앱에 카메라 기능을 추가하려는 경우 CameraX와 Camera2를 사용할 수 있다. CameraX는 Camera2 패키지를 기반으로 만들어진 Jetpack 라이브러리로, API가 Camera2보다 훨씬 단순하고 기기 호환성 문제가 없어 ogyong.tistory.com 카메라 미리보기에 이어서 카메라 캡처를 해보려 한다. 간단하게 '캡처하기' 버튼을 클릭하면 ImageView에 해당 이미지를 보여주고, '다시찍기' 버튼을 클릭하면 초기화면으로 돌아가는 앱을 만들었다. 카메라 캡처(촬영)하기 예제 카메라 캡처를 하기 위해서는 ImageCapture의 takePicture를 사용해야 한다. takePicture는 캡처된 이미지를 .. Android/Camera 2022. 11. 14. [Android] 권한(Permission) 처리하기 Android 5.1 버전 이하에서는 앱의 설치 단계에서만 사용자에게 권한을 요청한다. 개별적으로 권한을 선택할 수 없어서 앱을 사용하기 위해서 요청된 묶음 권한에 대해 감수할 수밖에 없었다. 또한 사용자가 앱 사용 중 어느 타이밍에 해당 권한을 사용하는지 확실히 알 수 없어서 약간의 찝찝한(불안한)을 가질 수밖에 없었다. 하지만 Android 6.0 버전부터 앱 실행 중 사용자에게 권한을(런타임 권한) 요청할 수 있는 기능이 추가됐다. 사용자의 입장에서 어떤 동작을 할 때 권한 요청을 받기 때문에 이 권한이 왜 필요한지 이유를 알 수 있다. (사용자가 편안함을 느낀다고 한다.) 안드로이드 버전이 업데이트될 때 어떤 기능에 대해서 권한을 체크하도록 추가되는 경우가 있다. 예를 들어 Android 12 버.. Android/Permission 2022. 11. 7. 이전 1 2 3 4 다음