일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- google play
- 인앱결제
- SWIFTUI
- mvvm
- rx
- MediaPlayer
- list
- Reactive
- RxKotlin
- Koin
- node.js
- 동영상
- android13
- GCP
- junit
- liveData
- PagingLib
- Animation
- paging
- Android 13
- MediaSession
- node
- MotionLayout
- Observable
- SwiftUI Tutorial
- Android
- mysql
- 테스트 자동화
- Kotlin
- databinding
- Today
- Total
목록Android (53)
봄날은 갔다. 이제 그 정신으로 공부하자
안드로이드에서 animaion을 처리하는 방법은 크게 3가지로 나뉩니다. Animation을 사용하는 방법과 Animator를 사용하는 방법 그리고 마지막으로 MotionLayout이 있습니다. 안드로이드가 발표되면서 최초로 나온 것이 Animation이고 그후 Animator가 발표되었고 몇년전에 MotionLayout이 발표되었습니다. MotionLayout 관련된 내용은 이전 글 참고 부탁 드리겠습니다. https://als2019.tistory.com/16 이 글은 animation과 animtor의 차이에 대해 설명하는 글이 아니라 사용자가 아이콘 클릭 시 종처럼 흔들리는 애니매이션 효과를 줄 때 사용할 수 있는 다양한 방법에 대해 설명하기 위한 것입니다. 방법은 한가지만 있는 것이 아니므로 굳..
곰곰히 생각해보는 createScaledBitmap()과 compress() 함수 차이 이미지 관련 서비스 개발 시 개발자들이 자주 접하는 함수가 위 두 개 함수 입니다. 뒤에 자세히 설명하겠지만 대략 설명하자면 createScaledBitmap()함수는 사이즈가 큰 비트맵을 내가 원하는 사이즈에 맞게 리사이징하는 함수이고 compress()함수는 이미지의 사이즈는 그대로 두고 퀄리티를 조절하는 함수 입니다. 이렇게 설명하면 고개를 끄덕거리는 분들도 있겠지만 고개를 끄덕이는 분들은 이글을 잘 읽지 않을테니... ㅠ_ㅠ 예를 들어 설명하자면, 읽어올 사진의 사이즈가 가로*세로 2048*2048 사이즈의 5MB 메모리 용량(저장된 파일 사이즈 아님.)을 가진 사진이라고 할 때 createScaledBitma..
지난번 글에서 이미지 정보를 읽어올 때 ExifInterface를 사용해서 정보를 읽어오라고 글을 작성하였는데 이미지 정보는 단말의 MediaStore DB에서도 읽어올 수 있습니다. 이번 글에서는 MediaStore DB와 ExifInterface에서 사진 정보를 읽어오는 방법에 대해 설명하도록 하겠습니다. 우선 MediaStore DB부터 MediaStore DB는 대략 아래와 같은 정보를 읽어올 수 있습니다. 아래는 의미 있어보이는 컬럼만 정리한 것으로 삼성 갤럭시 노트10+를 기준으로 55개의 컬럼을 가지고 있습니다. MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.Media.ORIENTATION, Media..
해당 글은 Android 기기의 갤러리에서 사진을 읽어와 리스트로 보여주거나 큰 이미지를 보여주는 작업을 하는 개발자들에게 도움을 주고자 작성하였습니다. 사실은 이렇게라도 기록을 해놔야 제가 다음에 작업을 할때 안까먹을 것 같아서 ㅠ_ㅠ 비트맵에 대해 쓸 말이 많아 글을 여러 개로 나누어서 작성하도록 하겠습니다. ^___^;;; 갤러리에서 사진을 가져와 화면에 보여주는게 별거 아닌 것 같아도 제대로 개발하면 나름 고급 기술이 많이 들어갑니다. 하나하나 풀어보겠습니다. 갤러리에서 사진을 가져오는 것은 지난번 글(https://als2019.tistory.com/54)에서 자세히 설명하였으니 넘어가고 이번 글에서는 갤러리에서 사진을 효율적으로 그리고 제대로 읽어오는 것을 중점으로 설명하겠습니다. 이전 기억을..
해당 글은 이전에 작성한 중복 클릭 방지의 후속편 입니다. https://als2019.tistory.com/51 시간차를 이용한 중복 방지는 사용자가 버튼을 난타했을 때 여러번 처리되는 문제를 해결할 수 있지만 네트워크와 같이 비동기로 처리되는 경우 시간차를 이용한 방식은 정답이 될 수 없습니다. 간단히 생각하면 아래와 같은 문제가 발생할 수 있기 때문 입니다. 로그인 버튼을 눌렀을 때 상세보기 버튼을 클릭 시 상세보기 화면으로 이동한다고 했을 때 시간차(1sec)를 이용한 중복 방지만 적용한다면 사용자가 로그인 버튼을 난타해도 1초 동안은 로그인 버튼이 다시 눌리는 일이 없으므로 로그인 화면은 1번만 활성화되게 됩니다. 아름답고 안전한 시나리오 입니다. ^___^ 하지만 네트워크 처리와 같은 비동기 ..
이번 글은 아래 글에 이은 2편 입니다. https://als2019.tistory.com/52 지난번 글에서 Scoped Storage에 대해 너무 뜬구름 잡듯이 설명하고 지나가서 저 스스로도 그래서 어떻게 저장소에서 이미지를 읽어오라는건데? 라는 질문일 들더라구요. 그래서 저장소에서 이미지를 읽어오느 샘플 소스를 직접 만들어 보았습니다. ^______^v 샘플 소스는 아래 git lepo에 있습니다. https://github.com/lee-kil-jae/MyGallery 샘플 소스 위주로 간략히 설명하도록 하겠습니다. 설명 전에… 해당 소스는 MVVM 패턴으로 제작되었으며 DI로는 KOIN을 이미지 라이브러리로는 coil을 사용하였습니다. 그외에 tedpermission 등 다양한 라이브러리를 사용..
Slice는 Google 검색 앱 내 및 Google 어시스턴트와 같은 다른 요소에 서식 있는 동적 양방향 콘텐츠를 표시할 수 있는 UI 템플릿 입니다. Slice를 사용하면 사용자가 전체 화면 앱 환경 외부에서 참여하여 작업을 더 빠르게 실행할 수 있습니다. Slice 지원 기능은 Android Jetpack에 내장되면 Android 4.4 버전까지 지원하므로 거의 모든 android 사용자(95%)가 Slice 기능을 사용할 수 있습니다. Slice는 라이브 데이터, 스크롤 콘텐츠, 인라인 작업, 앱의 딥 링크를 지원합니다. Slice에는 전환 및 슬라이더와 같은 상호작용 관리도 포함할 수 있습니다. 이게 무슨 소리냐면 아래와 같이 사용 가능하다는 건데... 이글을 쓰고 있는 지금도 이건 어디에 사용..
일반 사용자는 개발자와 달리 버튼을 여러번 누르기 때문에 상용앱을 출시하기 위해서는 반드시 앱에 중복 클릭으로 인한 오작동을 막는 기능을 추가해주어야 합니다. 중복 클릭 방지는 쉬운 것 같지만 상황에 따라 다르게 처리해야 하는 경우가 많아 은근히 번거롭습니다. 상황에 따른 적절한 중복 클릭 방지 기술은 여러가지가 있지만 이 글에서는 간단히 시간 차이를 통한 중복 방지에 대해서 설명하겠습니다. 아래와 같이 상단에 검색 버튼이 있고 버튼 하단에 검색 결과가 리스트 형태로 보여지는 화면이 있는 경우를 예를 들면… 중복 클릭을 방지해야 하는 부분은 크게 두부분으로 나눌 수 있습니다. - 검색 버튼 중복 클릭 방지 - 리스트 아이템을 중복 클릭 방지 “검색 버튼 중복 눌림 방지” 서버에 검색 요청을 중복으로 하고..