일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Hilt 에러
- Android Compose
- power menu
- Android Compose Navigation
- Coroutine
- Thread vs Coroutine
- 안드로이드 커스텀 뷰
- Unsupported metadata version. Check that your Kotlin version is >= 1.0: java.lang.IllegalStateException
- viewmodel
- 코루틴
- Sticky Header RecyclerView
- 힐트
- Android Custom View
- hilt
- 안드로이드 컴포즈
- RecyclerView Sticky Header
- 백준 2615
- 안드로이드 무한 스크롤
- Kotlin Serialization
- android compose orbit
- 백준
- android orbit
- runCatching
- 코루틴 공식 문서
- 코루틴 공식문서
- power menu 라이브러리
- AAC ViewModel
- 스레드 vs 코루틴
- BOJ
- 코틀린 에러 핸들링
- Today
- Total
목록Android (32)
Beeeam
최근 진행하고 있는 프로젝트에서 밑과 같은 문제에 직면했다. 위의 영상은 현재 진행중인 프로젝트의 피드를 구현한 것이다. 피드는 RecyclerView로 구현하였다. 좋아요를 클릭하면 ViewModel의 피드 데이터에 이를 반영하고, 이에 따라 좋아요 개수를 보여주도록 의도하였지만 위와 같이 좋아요를 클릭 했을 때 해당 게시물 작성자의 프로필 사진이 없는 경우 이전에 좋아요를 눌렀던 게시물 작성자의 프로필 사진으로 변경이 되는 현상이 생겼다. 뭐가 문제일까? ViewModel의 데이터 문제? 클릭할 때마다 프로필 사진이 변경 되기 때문에 처음에는 ViewModel의 피드 데이터를 변경할 때 프로필 사진의 url 값이 바뀌는 것으로 판단하였고 해당 메서드에서 로그를 찍어봤다. 프로필 사진이 바뀌는 경우에도..
Power Menu 라이브러리는 메뉴나 팝업을 개발자가 원하는 대로 편리하게 커스텀하여 보여줄 수 있게하는 라이브러리이다. 밑의 링크에 들어가면 더 자세히 확인할 수 있다. https://github.com/skydoves/PowerMenu GitHub - skydoves/PowerMenu: :fire: Powerful and modernized popup menu with fully customizable animations. :fire: Powerful and modernized popup menu with fully customizable animations. - GitHub - skydoves/PowerMenu: :fire: Powerful and modernized popup menu with ..
요즘 앱들을 보면 밑에 바가 있고, 이 바의 아이템을 클릭하여 다른 화면으로 이동하는 등의 동작을 하는 것을 볼 수 있다. bottom navigation bar가 있으면 편하게 화면을 이동할 수 있는 장점이 있는 거 같다. (개인적인 생각) 개발을 하면서 몇 번 구현한 적이 있었는데 계속 까먹어서 이번에 기록도 할 겸 정리해봤다. 라이브러리 먼저 라이브러리를 추가해줘야 한다. implementation 'com.google.android.material:material:1.9.0' 메뉴 xml 생성 옵션들을 보여줄 xml을 작성한다. res에 menu Directory를 생성하고 이 안에 xml 파일을 만들면 된다. icon 속성에는 보여줄 아이콘을 넣고, title 속성에는 해당 아이템의 이름을 정의..
Timber Android에서 많이 사용되는 로깅 라이브러리이다. 기존의 Log 클래스보다 더 간결하게 로그를 출력할 수 있고, release할 때 로그가 노출되지 않는 장점이 있다. // Log 클래스 사용 Log.d("TAG", "내용") // Timber 사용 Timber.d("내용") 코드를 보면 더 간결하게 로그를 찍을 수 있는 것을 확인할 수 있다. 사용 https://github.com/JakeWharton/timber GitHub - JakeWharton/timber: A logger with a small, extensible API which provides utility on top of Android's normal Log class. A logger with a small, ext..
Splash 화면 앱을 실행하면 맨 처음에 잠깐 나타났다가 없어지는 화면이다. 단순히 로고를 보여주는 경우도 있지만 필요한 리소스를 다운 받는 것을 대기하기 위한 목적으로 사용되기도 한다. 구현 방법 단순하게 Splash 화면을 위한 Activity를 만들고, 시작 Activity로 설정하고 몇 초 뒤에 메인 화면으로 넘어가게 할 수 있다. 하지만 안드로이드 12가 되면서 모든 앱에 강제적으로 Splash 화면에 앱의 아이콘을 보여주게 되었다. 그래서 앞에서 말한 방법을 사용할 수 없다. Splash screen api를 사용하면 Splash 화면을 간단하게 구현할 수 있다. 구현 app단의 build gradle에 라이브러리를 추가한다. // SplashScreen Api (Android12 뿐만 아니..
Custom View 개발자가 맞춤 설계한 뷰를 의미한다. 안드로이드에서 기본으로 제공하는 View들로 원하는 것을 구현할 수 없는 경우, 비슷한 형태의 뷰를 반복적으로 사용해야 하는 경우에 사용한다. 한 가지 예를 들어보자 두 개의 뷰가 있다. 둘은 겉 보기엔 같아보이지만 속의 구성을 보면 다른 것을 확인할 수 있다. 위의 뷰는 단일 뷰이지만 밑의 뷰는 겉을 감싸는 CardView, 이미지를 담는 ImageView, 텍스트를 가지고 있는 TextView로 구성이 되어있다. 근데 어떤 것을 사용하는 게 맞다고 정해져 있는 것은 없다. 그럼 밑의 코드를 보자 3개의 뷰로 구성된 두 번째 뷰보다 단일 뷰인 첫 번째 뷰의 코드가 더 적고, 덜 복잡한 것을 확인할 수 있다. 이것 말고도 다른 장점들도 존재하는데..
졸작하는데 카메라를 연동 해야하는 작업이 생겨서 카메라를 연동하는 작업을 해봤다. 먼저 카메라를 사용하려면 카메라 권한부터 설정 해야한다. AndroidManifest.xml 메니페스트에 위의 코드를 추가하여 카메라와 저장소 권한을 설정한다. const val REQUEST_IMAGE_IMAGE_CAPTURE = 1 ... // 카메라 실행 private fun openCamera() { val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) try { startActivityForResult(takePictureIntent, REQUEST_IMAGE_IMAGE_CAPTURE) } catch (e: ActivityNotFoundException)..
새로운 프로젝트를 생성할 때 마다 타이틀 바를 제거하였는데 이때 마다 구글링 했었다. 매번 구글링 하기 귀찮으니 이번에 블로그에 올려 놔야 겠다는 생각을 해서 작성한다. 진짜 별거 없이 엄청 간단한 작업이다. res -> values -> themes.xml 파일에 밑의 코드를 추가하면 끝난다. 기본적으로 위와 같이 설정이 되어있는데 맨 밑에 코드 한 줄 추가 해주면 끝난다. (style 태그 안의 맨 밑) true 이러면 타이틀 바가 제거된다!