본문 바로가기

안드로이드18

[Android] Retrofit2로 recyclerview 페이징 처리하기 [나중에 참고하기 위해 기록] POST로 요청 시, Request Body 부분을 다음과 같이 한다고 가정한다. { "type": 0 "startidx": 1 "endidx": 40 } 응답으로 예를들어 다음과 같이 온다고 가정한다. { "resultcode": 0, "message": "success", "response": [ { "idx": 1, "title": "hello", "date": "20201201" }, { "idx": 2, "title": "world", "date": "20201202" }, { "idx": 3, "title": "I'm json", "date": "20201203" }, { "idx": 4, "title": "retrofit2", "date": "20201204" .. 2020. 12. 10.
[Android] 네이버 로그인 구현 (with Custom Thread) [삽질의 기록] 안드로이드 네이티브로 네이버 로그인을 구현하는 기능을 구현했다. API 30부터 AsyncTask의 지원이 중단되므로 아래 링크를 참고하여 Custom Thread를 필요한 부분만 일부 구현하여 로그인 기능을 만들었다. calvinjmkim.tistory.com/35 안드로이드 (Deprecated) AsyncTask 대체하기 안드로이드에서 백그라운드 작업을 하기 위해 자주 사용하는 AsyncTask가 사망선고를 받았다. 작년 하반기에 올라온 이 커밋에서 AsyncTask에 @Deprecated가 붙었고, 커멘트에 다음과 같이 나와 있다. Asy calvinjmkim.tistory.com 우선 네이버 아이디로 로그인하는 SDK를 다운로드 한 후 압축을 푼다. 다운로드는 아래 링크에서 할 .. 2020. 12. 8.
[Android] Disable tooltip Text in Bottom Navigation View [삽질의 기록] Bottom Navigation View에서 각 아이템을 길게 클릭하면 tooltip text가 나오는 것을 발견했다. 이 기능이 거슬려서 해당 기능을 지우기 위해 열심히 구글링을 한 결과 해결했다. 우선, 메뉴 아이템이 다음과 같다고 가정하자. res/menu/main_menu.xml 다음으로, BottomNavigationView를 그리는 코드에서 다음 함수를 넣는다. 이 함수내의 longClickListener는 long click event가 발생하면 return true를 함으로써 아무 이벤트도 일어나지 않도록 막는 역할을 한다. 이 Listener를 각 메뉴 아이템에 세팅한다. private void disableMenuTooltip(){ View bottom1 = findVi.. 2020. 12. 3.
[Android] Bottom navigation view + FAB border customizing [나중에 참고하려고 기록] 기존의 BottomNavigationView와 Floating Action Button가 합쳐진 레이아웃에 위 사진처럼 테두리를 감싸는 형태를 구현해야했다. stackoverflow를 참고해도 뭘 어떻게 해야할지 모르겠어서 직접 저런 형태를 가진 도형?을 구현하여 BottomNavigationView의 background에 넣어 구현하였다. 우선, BottomNavigationView와 FloatingActionButton을 activity_main.xml 파일에 코드를 작성한다. activity_main.xml 다음으로, bottom navigation view에 아이콘과 텍스트를 넣을 menu 부분을 작성한 후, app:menu="@menu/main_menu" 라인처럼 해당.. 2020. 12. 3.
[Android] Powermenu android.view.windowLeaked Error [잊어버릴까봐 기록] skydove library에서 제공하는 powermenu를 사용하다가 발생한 Error이다. 위 에러는 해당 Activity에서 powermenu를 show한 후, 엑티비티를 나갈 때 이 다이얼로그를 dismiss하지 않아서 생기는 현상이다. 따라서, Activity를 나갈 때, 명시적으로 dismiss하면, 위 에러를 해결할 수 있다. github.com/skydoves/PowerMenu skydoves/PowerMenu :fire: The powerful and easiest way to implement modern material popup menu. - skydoves/PowerMenu github.com PowermenuActivity.java @Override prot.. 2020. 12. 2.
[Android] FAB image size 조정하기 [잊어버릴까봐 기록] Floating Action Button 안에 이미지를 넣었는데, 이 때 이미지가 너무 작게 나와 잘 보이지 않았다. 따라서, FAB 안에 원하는 이미지를 삽입할 때 이미지 사이즈 조정하는 방법을 찾아보았다. 아래 코드에서 중요한 건 app:maxImageSize 이다. maxImageSize 부분을 적당히 조절하여 이미지 사이즈를 원하는대로 조정할 수 있다. fragment_fabtest.xml +) 추가로, fabSize는 mini와 normal이 있다. 이 사이즈는 이미지 사이즈를 조정하는 것이 아닌 FAB 자체 사이즈(동그라미 사이즈)를 조정한다. 이 때, mini, normal 둘 다 사이즈가 애매할 수 있다. FAB 자체 사이즈를 조절하고 싶을 때에는, app:fabCus.. 2020. 12. 2.
[Android] 다이얼로그에서 Edittext softkeyboard 올라오면 스크롤 안 되는 현상 [삽질의 기록] 임의의 버튼을 클릭하면 사전에 구현한 CustomDialog를 띄우는 기능을 구현했다. 이 CustomDialog에는 EditText Component가 포함되어 있으며, EditText는 자신에게 focus가 들어오면, 자동으로 soft keyboard를 올려준다. 이 때, dialog가 soft keyboard에 가려져 가려진 부분에 있는 버튼을 누를 수 없다는 불편함이 생겼다. 우선, 해당 다이얼로그에 ScrollView를 추가해주어야 한다. (본인이 스크롤을 하고싶은 구간에 하면 된다.) API 30의 경우 ScrollView만 추가해도 자동적으로 soft keyboard가 나와도 스크롤이 가능했다. 하지만, API 29이하의 디바이스에서는 ScrollView를 추가했음에도 스크롤.. 2020. 12. 2.
[Android] FCM foreground notification [삽질의 기록] Android에서 Firebase Messaging Service를 이용하여 Push notificiation 기능을 구현했다. 앱이 현재 실행 중인 상태가 아닐 때에는 디바이스의 상태표시줄에 푸시 알림이 잘 동작했다. 하지만, 앱이 실행 중인 상태에서 FCM 기능을 사용하고 싶었다. 보통 Application은 누군가가 댓글을 남긴다거나, 좋아요를 누르면 해당 게시글을 올린 사람에게 푸시 알림을 보낼 수 있다. 카카오톡도 마찬가지로 상대방으로부터 메시지가 오면 메시지가 왔다는 푸시알림과 어느 채팅방에 메시지가 왔는지 빨간색 동그라미 나타내어 메시지가 왔다는 표시를 한다. 이처럼, Firebase를 사용하여 알림이 오면 해당 버튼 이미지에 빨간색 동그라미를 나타내는, 즉 알림메시지를 감지.. 2020. 12. 2.
[Android] debug/release SHA-1 추출 방법 [삽질의 기록] 1. Android debug SHA-1 추출 방법 1) Android studio의 오른쪽 상단에 Gradle 탭을 클릭한다. 2) 본인 프로젝트 이름 > app > Tasks > android > signingReport 더블 클릭하여 실행한다. 3) signingReport를 실행하면 화면 하단에 run 탭에서 아래와 같은 결과를 얻을 수 있다. 여기서 SHA-1 값을 확인할 수 있다. 2. Android release SHA-1 추출 방법 1) release용 apk를 만들 때 사용한 jks 파일의 경로를 알고있어야 한다. 2) cmd에서 java가 설치된 경로로 이동한다. (나의 경우, java를 설치할 때 환경 변수도 같이 설정해주어 where java 명령으로 java 설치 .. 2020. 12. 2.