안드로이드/기타12 비동기 작업의 결과값을 동기적으로 반환받는 방법 2가지 외부와 통신을 하는 로직을 만들기 위해서는 비동기적인 로직이 필요합니다. 하지만, 가끔 비동기 함수를 호출하고 반환된 결과값을 받아 연속적으로 다음 로직을 실행하도록 하고 싶을때가 있습니다. 그럴때 사용할 수 있는 방법은 두 가지가 있습니다. 1. CompletableFuture 2. suspendCoroutine 2023. 11. 8. EditText - MultiLine과 IME_ACTION_DONE 함께 쓰기 개발을 하다가 EditText의 ui 요구사항 중이 1. 입력을 하다가 width에 텍스트가 가득차면 다음 줄로 넘어간다. 2. 화면에 최대 3줄까지 표시된다. 3. 키보드의 done 버튼으로 클릭 이벤트를 정의한다. 검색이나 Chat GTP에게 물어보면 xml에 이런식으로 작성하라고 하는데, 이는 위의 요구사항대로 동작하지 않았다. android:imeOptions="actionDone" android:inputType="textMultiLine" 해결방법은 다음과 같다. 먼저. xml에 android:maxLines="3" android:inputType="textMultiLine" 그리고, 액티비티나 프래그먼트에 다음 코드를 작성하면 된다. binding.etPrompt.imeOptions = Ed.. 2023. 9. 11. [안드로이드] DiffUtil의 동일성과 동등성에 대한 이해 안드로이드의 RecyclerView를 사용할 때, DiffUtil을 사용하여 성능을 개선할 수 있는데, 그 원리에 대해 설명하고자 포스팅합니다. 가장 처음 RecyclerView를 구현하기 위해서 Adapter를 구현하고 RecyclerView와 연결지어줍니다. 그리고 보통 데이터를 화면에 뿌려주기 위해서 adapter.notifyDataSetChanged()를 호출합니다. 하지만, 리스트 중에 아이템 하나만 변경이 되었을 때에도 notifyDataSetChanged()를 호출하여 리스트를 업데이트 하는 방식은 퍼포먼스를 저하시킵니다. 이를 방지 하기 위해서 notifyItemChange(position), notifyItemRemoved(position), notifyItemInserted(positi.. 2022. 4. 8. [안드로이드] 안드로이드 스튜디오 범블비 업데이트 이후 Gradle 변경사항 범블비 업데이트 이후 새 프로젝트 생성 후 Project 수준의 build.gradle 파일을 여니까 굉장히 생소한 화면이 보였다 변경 전 변경 후 그리고 이런 저장소 경로 지정 하는 부분은 settings.gradle로 옮겨졌다 settings.gradle build.gradle(Project) classpath를 설정하는 부분이 아래와 같이 변경되었는데, ':'가 들어가면 오류가 나서 구글링해보니 다음과 같이 추가하면 된다고 한다. 2022. 4. 3. [안드로이드] RecyclerView 아이템이 서서히 나타나는 애니메이션(LayoutAnimation) RecyclerView의 아이템이 서서히 나타나는 애니메이션을 만들어 보겠습니다~ 먼저 평범한 RecyclerView를 하나 만들고 더미 데이터를 추가하여 배경색을 각각 다르게 만들겠습니다. 액티비티와 xml 파일의 코드를 보면 평범한 RecyclerView를 구현해 놓은 상태이고, xml 파일의 RecyclerView의 layoutAnimation 속성만 해주었습니다. 그리고 res > anim 폴더 생성 > item_animation_fall_down.xml 파일을 생성합니다 태그 사이에는 여러 개의 애니메이션 효과를 삽입할 수 있습니다. (translate는 x, y 좌표로 이동, alpha는 투명도, scale은 크기) item_animation_fall.xml 파일은 RecyclerView 아이.. 2022. 3. 31. [안드로이드] 디바이스 가로/세로 길이 구하기 API Level 30이상 부터 defaultDisplay가 Deprecated 되었다. API Level 30을 분기 처리하여 디바이스의 크기를 다음과 같이 구하자 2022. 3. 29. 이전 1 2 다음