금일 알아 볼 것오늘은 오랫만에 글을 포스트하려고 한다.한 동안 프로젝트 등에 찌들어서 쓸 시간이 없었다.오늘 알아 볼 것은 Splash 화면이다.Splash 화면Splash 화면은 앱을 실행하게 되면 가장 먼저 잠깐 뜨는 화면을 말한다.오늘 글을 포스트하게 된 이유는 해당 Splash화면을 구현하는데 있어서 안드로이드 12부터는 고유 Splash 화면을 지원해주기 때문이다.이게 좋기는 하지만 뭔가 아직 자유로운 화면을 짜기는 무리가 있어 보인다.그래서 총 3가지 방벙이 있다.Android12 SplashScreen 기능을 사용하는 방법해당 방법은 Android 12에서 지원해주는 기능을 사용하는 방법이다.SplashScreen API 사용하는 방법해당 방법은 기존 Android 12 이하의 버전에도 A..
오늘 알아 볼 것 오늘은 간단하게 .gitignore에 대해서 알아 보려고 한다. .gitignore gitignore은 안드로이드 개발을 하다 보면 한번 씩은 봤을 파일이다. 이 파일이 뭘까 하는 고민을 하기도 하는데 이 .gitignore 파일은 개발을하다가 commite, push를 할 때 제외하고 싶은 파일을 설정해주는 파일이다. 정확히는 프로젝트에 원하지 않는 백업 파일이나 로그파일 혹은 컴파일 된 파일들을 Git에서 제외할 수 있는 설정 파일을 말한다. 이게 무슨 뜻이냐면 가끔씩 협업 개발을 하다보면 보일 것이다. 내가 쓴 파일이 아닌데 같이 commite, push할 때 같이 뜨는 것을 볼 수 있을 것이다. 보통 이런 파일은 개인 android studio의 설정 파일이다. 이게 문제가 되는..
오늘 알아 볼 것 앱을 배포할 때 apk에서 aab로 바꾸는 것을 볼 수 있을 것이다. 왜 그럴까? 오늘 알아 볼 것은 바로 apk에서 aab로 바꾸는 이유에 대해서 간단히 알아 볼 것이다. 구글에서 정책을 바꾸다? 우리가 사용하는 앱에도 특정 확장자가 붙는다. 바로 .akp이다. IOS앱에서는 .ipa가 안드로이드에서는 .apk가 붙는다. 그런데 구글이 2021년 8월 부터 구글 플레이에 새로 올라오는 모든 앱은 AAB 형식이어야 한다는 정책을 바꾸었다. 그렇다면 왜 바꾼 것일까? 그리고 AAB는 무엇일까? AAB? 우리가 사용하는 앱의 확장자인 APK(Android Package)는 이미 완성된 안드로이드 앱 파일을 말한다. 그렇다면 AAB(Android App Bundle)은 무엇일까? AAB는 바..
오늘의 알아 볼것 요즘 바뻐서 TIL을 쓸 여유가 없었다. 과제 및 프로젝트가 겹쳐서....ㅠㅠ 그래도 오늘 여유가 되서 저번에 쓰려고 해던 참조 함수를 직접 사용하는 예제에 대해서 글을 포스트한다. 내가 배운 것을 정리하기 위해서!! 참조 함수 우리가 흔히 RecyclerView의 item에 대해 클릭 이벤트를 작성하기 위해서는 interface를 많이 사용한다. 하지만 만약에 각각의 똑같은 item에 대해서 한 가지 이벤트가 발생하면 참조 변수를 사용하여 간단히 구현할 수 있다. 자 알아보자 아래코드는 Activity,Fragment에서 사용되는 실제클릭에 대한 이벤트 코드이다. private fun setCategoryAdapter() { categoryAdapter = CategoryAdapter..
오늘은 알아 볼 것 오늘은 간단히 코틀린 함수 참조에 대해서 알아보려고한다. 람다식 일단 함수에 참조에 대해서 알아기 전에 간단히 람다식에 대해서 알아보자 람다는 익명 함수를 말하며 주로 메소드를 따로 선언하지 않고 일회용으로만 사용할 때 사용한다. 아래의 있는 기본 메소드를 예시로 들어보자 fun sum(x: Int, y:Int): Int{ return x + y } 위 함수를 람다식으로 표현하면 // 1방법 val sum = {x: Int, y: Int -> x + y} // 2방법 val sum:(Int,Int) -> (Int) = {x:Int, y:Int -> x + y} println(sum(2,3)) 위 방법 처럼 일반적인 함수를 람다식을 통해서 표현 할 수 있으며, 기본적인 문법은 아래와 같..
오늘 알게 된 것 금일도 개발 중에 알게 된 것을 이지 않기 위해서 글을 쓴다. TabLayout 스크롤 감지 오늘 글을 쓰게 된 이유이자 조금 낳이 고민했던 부분이다. 스크롤이 가능한 TabLayout을 구현하는 도중에 화면을 넘어가는 tabItem이 선택 되었을 때 해당 tabItem에 스크롤과 화면을 잡아 줘야되었다. 여기서 문제가 발생했다. 해당 tabItem에 선택은 되는데 해당 화면이 스크롤되어 자동적으로 화면에 보여주지 않았다. 물론 tablayout의 함수 중 setScrollPosition(index, 0f, false)[해당 아이템 인텍스, 인덱스 오프섹, updateSelectedTabView(boolean)]가 존재 했다. 즉 해당 함수를 이용하면 TabLayout의 tabItam의..
금일 알아 볼 것 오늘은 특별한 개념은 아니고 개인적으로 잊지 않고 나중에 같은 일이 생겼을 때 다시 사용하기 위해서 포스트를 쓴다. 오늘 알아 볼 것은 RecyclerView의 스크롤을 제어 할 수 있는 LinearLayoutManager의 함수인 canScrollVertically() 함수이다. canScrollVertically() 함수 요녀석은 스크롤이 가능한 상태임을 알려주는 함수이다. 이름에서 Vertically이라는 있듯이 위아래의 이벤트를 받을 수 있다. 정확히는 canScrollVertically(int direction) 형식으로 들어간다.(자바 형식) 해당 direction 부분에 -1이 들어갈 경우 위쪽, 1이 들어갈 경우 아래쪽 이벤트를 받게 된다. 그리고 리턴 값이 false라면..
오늘 찾은 것! 오늘은 ScrollView를 사용하다가 에레 사항을 발생 했다. 늘 잘 사용하다가 값자기 에러 사항이 발생하였고 어떻게 보면 가장 기초적인 부분인데 본인도 모르는 사이에 잊을 수 있어 다음에 절대 잊지 않기 위해서 글을 포스트한다. 자 왜 오류가 나서 화면이 안뜰까? 정상 사진 오류 사진-1 오류 사진-2 자 어떤 이유에서 3사진 중 1개만 정상이고 나머지 둘 중에 한개는 화면이 아에 안들고 한개는 흰색 화면만 뜨게 되는걸까용? 이유는 간단합니다. 어떻게 보면 2개의 오류 모두 똑같은 이유에서 뜨는 에러입니다. 자 설명하겠습니다. 2번째 사진의 에러가 나는 이유는 DataBinding은 가질 수 있는 하위 뷰가 한개 이기 때문입니다. 코드의 줄을 잘보면 가지고 있는 하위 뷰를 Appbar..
오늘 배워 볼 것 오늘은 SavedStateHandle에 대해서 간단히 다루어 보겟당. SavedStateHandle 넌 뭐냥? 우리는 흔히 ViewModel을 사용하는 이유가 ViewModel은 UI Data를 안전하게 보관하는 방법 중 하나로 ViewModel의 생명 주기가 Activity의 생명 주기 보다 길기 때문에 화면이 회전을 해도 데이터가 보존된다. 또한 onSavedInstaceState()를 사용하지 않기 때문에 데이터를 쉽게 저장/복원 가능하면 메모리에 저장이 가능하다. 하지만 이런 ViewModel도 메모리에 저장되기 때문에 Acdroid Frameworkd에서 메모리를 회수하게 되면 저장된 값을 잃게된다. 이런 문제점을 해결하기 위해서 ViewModel에서는 SavedstateHan..
금일 알아 볼 것 Jetpack Navigation 의 데이터 전송 방식 중 하나인 safe args를 알아보려고 한다. Jetpack Navigation safe args 일단 해당 safe args를 사용하기 위해서는 build.gradle 파일과 classpath가 필요하다. [build.gradle] buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }아래 부부은 둘 중 하나만 추가한다. 자바 모듈 또는 자바와 Kotlin 혼합 모듈에 적합한 자바 언어 코드를..