전체 글

안드로이드/에러 해결

[ 안드로이드 ] BottomSheet + CoordinatorLayout 테두리 Radius 설정 안먹힐 때

문제 상황 BottomSheetDialogFragment 안에 CoordinatorLayout으로 화면을 구성해둔 상태에서 바텀 시트의 테두리에 Radius 속성을 적용하려했는데 적용되지 않았다. 위의 방법으로 다른 바텀 시트는 다 적용이 잘 되는데 CoordinatorLayout이 들어간 바텀 시트에만 적용이 안되고 있었다. CoordinatorLayout이 바텀 시트를 덮어쓰고 있는 것 같아서 CoordinatLayout의 Radius를 조절해주니까 잘 적용이 된다. 방법은 아래와 같다. 적용 방법 /** * 바텀시트 코너 Radius 지정 */ private fun initCoordinatorLayout(){ bind.coordinatorLayout.outlineProvider = object : ..

안드로이드/에러 해결

[ 안드로이드 ] RecyclerView Filterable 사용 시 InConsistency detected. Invalid item position 에러 해결

에러 상황 [ 안드로이드 ] RecylcerView + Filterable을 이용하여 실시간 검색 기능 구현하기 졸업 작품을 진행하면서 위와 같은 화면을 구현해야했다. 약품 리스트를 받아와서, 검색한 단어와 일치한 모든 약품들을 보여줘야했다. 추가로 일치하는 단어에는 하이라이팅까지 해줘야했다. dongx2.tistory.com 이전에 위와 같은 화면을 구현하는 방법을 포스팅 했었는데, 위의 기능을 구현하면서 발생했던 에러에 대해서 적어보고자 한다. 에러 로그 검색을 하는 도중에 Incosistency detected. Invalid item postion ~~ 에러가 발생하면서 앱이 죽는 문제가 발생했다. 대충 어떤 부분에서 에러가 나는지 짐작은 되는데 정확히는 모르겠다. 이번 에러의 원인은 두 가지인 ..

안드로이드/이론

[ 안드로이드 ] Room DB - Dao 사용법

[ 안드로이드 ] 제목 DAO DAO는 인터페이스(interface)나 추상 클래스(abstract)로 정의할 수 있다. 안드로이드 공식 문서에 따르면 일반적으로는 인터페이스로 사용하라고 권장하고 있다. DAO 인터페이스 (또는 추상 클래스)에는 무조건 @Dao 어노테이션을 선언해주어야 한다. Retrofit의 Service와 매우 유사하기 때문에 많이 익숙한 형태이다. @Dao interface MedicineDao { @Insert fun insert(medicine: Medicine) @Insert fun insertAll(medicines: List) @Update fun update(medicine: Medicine) @Delete fun delete(medicine: Medicine) @Que..

안드로이드/이론

[ 안드로이드 ] RecylcerView + Filterable을 이용하여 실시간 검색 기능 구현하기

졸업 작품을 진행하면서 위와 같은 화면을 구현해야했다. 약품 리스트를 받아와서, 검색한 단어와 일치한 모든 약품들을 보여줘야했다. 추가로 일치하는 단어에는 하이라이팅까지 해줘야했다. 위의 화면에서 지켜져야 할 조건들은 아래와 같다. 전체 약품 리스트를 미리 갖고 있어야한다. 입력을 감지해서 실시간으로 결과를 출력할 것이기 때문에, 속도나 서버 부하 측면에서 매번 서버로 요청을 보낼 수 없다. 미리 전체 약품 리스트를 받아와서 변수로 저장해둔 후 사용해야한다. 일치하는 단어는 하이라이팅으로 표시해줘야 한다. Spannable을 이용해서 TextView의 색상을 조절해주면 된다. 약품 검색 화면 xml 작성 먼저 화면을 작성해준다. 나같은 경우에는 약품을 선택했을 때 해시태그처럼 상단에 추가되게 할 예정이었..

안드로이드/이론

[ 안드로이드 ] BottomSheetDialog 테두리 둥글게 설정하기

사진과 같은 BottomSheetDialog를 구현해보고자 한다. 백그라운드에 대한 drawable을 만들어서 최상위 뷰의 background로 지정하면 되지 않을까 생각했었는데 적용되지 않았다. background를 지정해주어야 하는 건 맞지만 themes.xml에서 설정해주어야한다. themes.xml에서 설정하는 글 들이 많이 있지만, 따라해도 안되는 경우가 많았다. 같은 경우라면 아래의 코드를 시도해보면 좋을 듯하다. 바텀 시트 백그라운드 생성 background_bottom_sheet.xml 원하는 모양으로 배경을 생성해준다. Themes.xml 설정 themes.xml에 다음과 같은 코드를 추가해준다. /.../ 그 후, 기본적으로 선언되어 있던 태그 사이에 아래 코드를 추가한다. 이렇게만 해..

안드로이드/이론

[ 안드로이드 ] - Selector를 이용하여 버튼, 체크박스 등에 클릭 효과 주기

해당 화면을 보면 체크 아이콘과 버튼이 활성화 되었을 때와 비활성화 되었을 때 디자인이 다른 것을 볼 수 있다. 앱을 구현하다보면 위와 같이 사용자의 동작에 따라 버튼을 활성화/비활성화 해야하는 경우가 많은데, 이는 Selector를 이용하면 쉽게 구현할 수 있다. Selector 작성 item의 속성에 보면 state_enabled처럼 상태를 지정해줄 수 있다. state_enabled는 활성화 되었을 때를 뜻하며, 클릭 했을 때 색상을 변경하고 싶다면 state_checked를 사용하면 된다. 버튼에 Selector 지정 이런식으로 background에 속성을 지정해주면 된다. 텍스트도 같이 변경하고 싶다면 text에 대한 Selector도 생성한 후 지정해주면 된다.

프로젝트 관리 & 협업/Github

[ Github ] - Github Actions을 활용하여 apk 자동 업로드하기

[ Github ] - Github Actions를 활용하여 release 자동으로 생성하기 [ Github ] - Github Actions로 안드로이드 APK 자동 생성하기 안드로이드 개발을 하다보면 apk를 추출해야 될 경우가 생긴다. 특히, 앱 파트와 서버 파트를 구분해서 분업을 하거나, 디자이너와 같이 협 dongx2.tistory.com 이전 글에서 Github Actions를 이용하여 자동으로 release 하는 방법을 소개했었다. 이번엔 release를 생성하면서 해당 release 게시글에 apk까지 같이 업로드하는 방법을 소개한다. release에 파일을 업로드할 때에는 upload-release-asset api를 사용한다. (자세한 내용은 아래 링크를 참조) GitHub - acti..

프로젝트 관리 & 협업/Github

[ Github ] - Github Actions를 활용하여 release 자동으로 생성하기

[ Github ] - Github Actions로 안드로이드 APK 자동 생성하기 안드로이드 개발을 하다보면 apk를 추출해야 될 경우가 생긴다. 특히, 앱 파트와 서버 파트를 구분해서 분업을 하거나, 디자이너와 같이 협업을 하는 경우 테스트를 위해서 apk를 추출해야하는 경 dongx2.tistory.com 이전 포스팅에서 Github Actions를 이용하여 안드로이드 Apk 파일을 자동으로 추출하고 업로드하는 방법에 대해서 알아봤다. 이번 포스팅에서는 release까지 자동으로 업로드하는 방법을 다뤄보고자 한다. 해당 기능은 Github Actions의 Release API를 사용한다. 자세한 내용은 여기를 참고하자. GitHub - actions/create-release: An Action t..

dongx._.2
DongZip