본문 바로가기

분류 전체보기236

[안드로이드] Circle ImageView 원형 이미지 (Custom ImageView, ShapeableImageView, CircleImageView) 원형 이미지를 만드는 방법은 여러가지가 존재한다. 평소에 나는 ImageView 를 커스텀해서 원형 이미지로 만들어 사용했다. 하지만, 이번에 개발 과제하다가 ShapeableImageView 가 있다는 걸 알게 되면서(🙄너무 늦게 알았다 하하..) Circle ImageView 를 만드는 여러가지 방법을 정리해도 좋다 생각하여 글을 적게 됐다. 1. Custom ImageView res/drawable 파일 내에 shape(Circle) 태그를 만든 Resource file 을 만들기. 만들고 난 뒤, ImageView 에 연결시켜주면 된다. 아래 링크가 자세히 나와있으니, 보고 하면 될 것 같다. https://www.geeksforgeeks.org/how-to-create-a-circular-ima.. 2023. 8. 31.
[안드로이드] 커스텀 Switch (thumb 이미지 넣기, track 사이즈 조정) 이번 회사 개발과제에서 Switch 를 커스텀해서 만들어야 하는데 원하는대로 만들어지지 않아 고생한 걸 기록할 생각이다. Switch 는, 클릭시 Flag (true/false) 를 이용하여 on/off 를 할 수 있는 뷰다. Switch 는 Custom 을 하지 않을 경우는 아래와 같다. 내가 구현해야 할 디자이너가 만들어준 Switch 는 아래와 같다. 위와 같이 Custom Switch 를 만들기 위해서 필요한 파일은 아래와 같다. 일단, track 이랑 thumb 개념은 알고 있을 것이다. track 은 스위치에 길다란 부분이다. 그리고 돌출된 원형이 thumb 이다. shape_switch_thumb_off.xml => Vector 이미지 (디자이너가 만든 이미지를 svg 로 Import) sh.. 2023. 8. 31.
[안드로이드] Error. You need to use a Theme.AppCompat theme (or descendant) with this activity. 커뮤니케이션 문제가 발생했었다. QA 프리징 기간에 코드를 수정하여 develop 브랜치에 push 를 했는데, 정기배포에 해당 커밋내용이 빠져버렸다. 역시나 이슈가 발생했다. 그래서 수정한 코드를 재반영한 긴급배포를 진행하고, Crashlitics 을 통해 모니터링하는 도중에 위와 같은 Crash 가 발생했다. You need to use a Theme.AppCompat theme (or descendant) with this activity. 위 에러는 말 그대로 M Theme.AppCompat 으로 해당 Activity 를 변경해서 사용하라는 말이다. 'You need to use a Theme.AppCompat theme (or descendant) with this activity.' Activ.. 2023. 8. 31.
[안드로이드] xml 파일 id 속성값이 지속적인 에러가 발생한다면? Cannot resolve symbol '@+id/' 오류 이번 이슈는 사실 개발하는 도중에 10분 정도 까먹었다.. 그래서 이렇게 블로그에 올리고자 한다. xml 작업 중에 ConstraintLayout 으로 뷰 작업을 하는데 id 값을 가지고 연결하는 과정에서 계속 android:id 가 빨간색 하이라이트가 쳐졌다. 안드로이드 스튜디오가 인식을 못할 땐 뭐다? Clean Project 를 실행하자. 내 상황에서는 빌드한 상태에서 작업을 하는 도중에 발생했다. 빌드를 정지하고 Clean Project 를 하면 id 값이 정상적으로 무얼 입력하던 빨간색 하이라이트가 안 쳐질 것이다. 어처구니 없는 걸로 시간낭비한 게 아까워서 이렇게 작성한다... + 추가로 rebuild, invalidate Cache .. 2023. 8. 30.
[안드로이드] org.threeten.bp.zone.ZoneRulesException: No time-zone data files registered 위 에러는 Android API 26(android 8.0 오레오 버전) 미만 에서 java.time 패키지를 사용할 떄 발생하는 오류다. 안드로이드 버전마다 지원 범위가 다를 수 있으므로, 사용하려는 기기의 안드로이드 버전에 따라 지원 여부를 확인하는 것이 중요하다. https://developer.android.com/reference/java/time/package-summary java.time | Android Developers developer.android.com 위 document 를 확인해보면 Added in API level 26 이라고 적혀있다. 즉, API 26 이상부터 java.time 패키지를 이용할 수 있다는 말이다. 그렇다면? 26 이전 버전은 못 사용할까? 아니다. 두 가.. 2023. 8. 18.
[안드로이드] room cannot verify the data integrity. looks like you've changed schema but forgot to update the version number [Error 발생] 신규 기능 추가 개발 중에 겪었던 Error 이다. 신규 기능을 추가하면서 로컬 DB로만 이루어진 기능이다보니, 신중하게 DB 설계를 하고를 개발을 했지만, 테이블 스키마가 변경되고, 테이블이 추가되는 상황이 왔고, 위 에러를 만나게 됐다. [확인 해야할 사항] 사실 보통 App 배포 후, 스키마가 변경되거나, 테이블 구조가 바뀌게 되면 Room Version 을 올리며 마이그레이션 코드를 추가하여 룸 데이터를 보존하며 작업을 한다. 하지만, 현재 개발기에서 개발 중에, 무의미한 더미데이터가 있을 경우 삭제 후, 다시 생성하면서 기능 개발을 하면 되는데 계속해서 위와 같은 에러가 발생했다. Androidmanifest.xml allowBackup = false 위 코드로 자동백업을 막.. 2023. 8. 13.
[Kotlin] zip(), mapIndexed(), filterNotNull() Leetcode 알고리즘 문제를 풀다가 자주 쓰지 않았던 함수를 사용하게 되어 정리를 하게 됐다. Leetcode - Find the Town Judge / https://leetcode.com/problems/find-the-town-judge/description/ Find the Town Judge - LeetCode Can you solve this real interview question? Find the Town Judge - In a town, there are n people labeled from 1 to n. There is a rumor that one of these people is secretly the town judge. If the town judge exists, the.. 2023. 7. 9.
[안드로이드] webview 메모리 덤프 평문 노출 이번 글은 회사에서 겪었던 이슈를 정리할 예정이다. 보안팀에서 외주분들과 함께 자사 서비스를 모의해킹 했다. 여러 보안 취약점이 발생했고, 그 중 한 가지인 의도적으로 메모리 덤프 했을 시에 '중요한 정보' 가 Hex(16진수) 코드들 사이에 그대로 평문 노출되는 것을 보안해야 하는 상황이였다. 해당 이슈를 해결하기 위해 찾아보는데, 내가 찾는 케이스가 존재하지 않았다. 우리 UI/UX 개발팀에서 Android native 만 담당하고, WebView 작업은 다른 사업팀에서 관리를 한다. 해당 보안 취약점 이슈를 어느 사업팀에서 처리를 해야 하는지 이야기가 오가는데, 서로 자기 쪽이 아니라고 한다. 정말 아리송하지 않는가..? Android Native 에서 WebView 를 연 뒤, Webview 에서.. 2023. 6. 30.