목록[Study]/Android (18)
기록
파이어베이스 동적링크 지원되는 웹주소를 자동화하려면 두가지 조건이 필요하다. 1. Intent filter에 autoVerify를 true로 선언 앱스킴 선언할때 인텐트 필터로 해당 속성을 함께 부여해준다. 2. 파이어베이스 프로젝트에 SHA-256 인증서 지문 추가 그리고, 사용하는 딥링크가 파이어베이스 동적링크라면 파이어베이스 프로젝트에 SHA-256 인증서 지문을 추가해야 한다. SHA-256 지문을 얻으려면 Android 터미널에서 ./gradlew signingReport 해당 명령어 입력시 지문값이 촤르륵 나온다.
https://developer.android.com/jetpack/compose/setup?hl=ko#sample 빠른 시작 | Jetpack Compose | Android Developers 빠른 시작 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Compose로 최적의 환경에서 개발하려면 Android 스튜디오를 다운로드하고 설치하세요. 새 프로젝트 템 developer.android.com 여러가지 공식 안드로이드 샘플 앱을 다운 받을 수 있다.
참고 공식문서 : https://developer.android.com/jetpack/compose/components/dialog?hl=ko 대화상자 | Jetpack Compose | Android Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 대화상자 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Dialog 구성요소는 팝업 메시지 developer.android.com Dialog는 Navigation, ViewModel SavestateHandle 이런거 없이 그대로 사용자에게 다음 행위에 이뤄질 일을 경고하는 스크린을 띄움과 동시에 행위 함수도 Dialog에 보내는게 구현되어 있어 ..
MutableState 값을 그대로 다른 컴포저블로 보내고, 이걸 또 다른 컴포저블로 보내고, 직접 .value 참조하여 값을 변경하면 위에서부터 아래까지 전부 리컴포즈가 일어난다고 한다. val dialogDescription = remember { mutableStateOf("") } ... PostCard( dialogDescription, ) ... PostCard( dialogDescription: MutableState, ) { dialogDescription.value = "텍스트" } 뭐 이런 형태에 대하여... 실제 코드는 depth도 더 깊고 변경하는 곳도 더 많았다. 이러한 경우에서는 해당 값에 대한 람다를 만들어서 아래로 람다함수만 보내 변경하는 방식이 많이 쓰인다고 한다. var ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
Hilt란? 힐트(Hilt)는 안드로이드에서 의존성 관리를(Dependency Injection, DI) 쉽게 해주는 라이브러리입니다. '의존'이란 한 클래스가 다른 클래스를 참고한다는 뜻인데, 개발을 하다보면 여러 클래스끼리 연결되는 경우가 흔하게 있습니다. 한 클래스가 준비되어야 다른 클래스도 쓸 수 있는 경우이지요. 2개 정도의 클래스면 손으로 클래스끼리 연결을 해 줄 수도 있지만, 클래스의 수가 많아지고 연결이 여러곳에서 생기면 일일이 객체를 만드는 것도 번거로운 일이 됩니다. 이러한 어려움을 해결하기 위해 Hilt 라이브러리를 사용하여 의존성을 관리할 수 있습니다. Hilt의 이점 Hilt를 사용하면 안드로이드 기본 컴포넌트를 자동으로 주입해줍니다. (e.g. Activity, Fragment,..
개발 과정 중 navigation으로 fragment를 교환하는 작업을 할 때 다음과 같은 오류를 만난 적이 있을 지도 모릅니다. 잘못된 action을 참조하여 이러한 오류가 발생했다면 해당 액션을 올바르게 수정하여 어렵지 않게 에러를 해결할 수 있습니다. 이 포스트에서는 대부분의 모든 action이 정상적으로 수행되나, 때때로 해당 crash가 발생하며 코드상에서 명확한 원인을 찾기 어려운 경우에 대해 기술합니다. 문제 원인 이 문제는 다음과 같은 이유로 navigation action 호출 이벤트가 연속적으로 두 번 이상 트리거될 때 나타납니다. 1. 네트워크 응답 콜백, 센서 및 인터넷 연결 콜백과 같은 non-user에 의해 트리거된 콜백 2. 해당 이벤트를 호출하는 버튼 클릭, 뷰 이벤트와 같은..
앱을 쓰다 보면 editText를 눌러 키보드를 올린 상태로 입력한 뒤, 바깥 부분을 아무데나 누르면 키보드가 내려가는 걸 볼 수 있다. 이 처리를 구현하고 싶다면 먼저 아래 메서드를 생성한다. void hideKeyboard() { InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } 프래그먼트를 사용 중이라면 아래 코드를 사용한다. private void h..
현재 만들고 있는 노트 앱에서 데이터베이스의 note data를 fetch하는 동안 프로그레스 바를 돌렸다. 이번에 유저 기능을 추가하면서 로그인/회원가입 단계에서도 데이터를 가져올 때 프로그레스 바를 돌리고 싶었다. 이렇게 같은 레이아웃을 반복해서 사용할 때는 xml에서 include라는 태그를 사용하면 레이아웃을 재사용할 수 있다. 사용법 먼저 재사용할 프로그레스바를 새로운 레이아웃 파일로 빼내고, 여러곳에서 프로그레스바를 돌릴 조건을 전달받기 위해 isVisible이라는 변수를 새로 정의했다. 그리고 해당 레이아웃을 사용할 xml 파일에 다음과 같은 내용을 추가한다. ... ... 위와 같이 include 태그의 layout 속성에 재사용하려는 레이아웃 파일 이름을 기술한다. 그리고 bind 속성으..