본문 바로가기

Android

(114)
[Compose] Compose 환경에서 Pull To Refresh를 구현해보자. 예전에 업무를 진행하다 위에서 아래로 잡아 당기면서 화면을 갱신하는 pull to refresh를 xml 환경에서 구현해 본 경험이 있다. 하지만 이번에는 Compose 환경이다보니 어떻게 해야 하나 잠깐 찾아보았는데, 이처럼 해당 기능 자체를 제공해주고 있었다. 이번 글에서는 해당 기능을 사용하여 아주 간단하게 Pull to Refresh 기능을 구현해보고자 한다. 우선, 해당 기능은 Material에서 제공하기 때문에 해당 dependency를 추가해 준다. implementation "androidx.compose.material:material:$material_version" 다음으로는, pull to refresh를 수행하기 위한 값을 선언해 줘야 하는데, 맨 위에 pullRefresh 함수를..
[Android] 음성 녹음을 하고, 저장해보자. Ffmpeg에 이어서, 업무를 진행하다가 이번엔 음성을 녹음하고 저장하는 기능을 추가하게 되었다. 정말 간단하게 녹음 및 재생이 가능한데, 이번 글에서는 그 간단한 음성을 녹음하고, 재생하는 방법에 대해서 알아보고자 한다. 우선, 다른 작업을 하기 앞서 음성 녹음을 진행하는데 반드시 필요한 권한을 추가해 주도록 한다. manifext 파일에 추가를 해줘야할 뿐 아니라, 음성 녹음 기능을 실행하기 전에 반드시 위의 권한을 사용자로부터 받고 실행해야 한다. 본 게시글에서는 사용자로부터 권한을 받는 로직은 제외하고 작성하도록 하겠다. 다음으로 음성을 녹음하고, 재생하기 위해서 필요한 클래스에 대해서 알아보자. 음성 녹음과 재생을 위해서는 별다른 라이브러리를 추가하거나 할 필요 없이, 안드로이드에서 자체적으로 ..
[Android] ffmpeg를 사용하여 동영상의 용량을 줄여보자. 필자가 업무를 진행하면서 미디어 파일을 공유하는 작업을 진행한 적이 있는데, 동영상 파일의 경우 높은 용량의 파일을 공유하려는 케이스가 상당히 많았다. 그래서 동영상 용량 자체를 줄인 후에, 새롭게 인코딩 된 영상 파일을 공유하면 좋겠다.라고 생각하여 찾아보다 발견했던 것이 ffmpeg이다. 이 ffmpeg를 사용하는 방법에 대해서 찾아봤는데, ffmpeg를 사용하는 방법에 대해서는 구글링하면 쉽게 찾아서 적용할 수 있었으나, Android Studio 내부에서 사용하는 방법은 그다지 많은 정보가 있지 않았다. 그래도 발견한 몇 가지 방법에서 가장 쉽게 적용하고 사용할 수 있는 방법에 대해서 설명하고자 한다. 우선, ffmpeg란 무엇인가? FFmpeg은 디지털 음성 스트림과 영상 스트림에 대해서 다양한..
[Android] Notification UI에 대한 몇 가지 변경 방법 지금까지 필자는 아주 간단하게 고정된 Icon만 들어간 App Push를 구현해 왔었다. 보통 앱 아이콘이 들어가고, Title에 Description에 가끔 추가적인 Large Icon정도로 정말 가장 기본적인 모양의 Push만 사용해 왔다. 하지만 이번에 업무를 진행하면서, push에서 볼 수 있는 Notification에 대한 UI를 커스텀해야 하는 경우가 생겼다. 아주 간단하게 수정이 가능한 부분이기는 하지만, 이 UI에 대해서 Custom 하고 적용하는 방법에 대하여 가볍게 작성해보고자 한다. 이번 포스팅에서는 Notification에 대한 모든 코드가 작성된 것이 아닌, UI를 변경하기 위한 부분만 작성했음을 미리 안내하고 글을 작성하겠다. 우선, 기본적으로 Notification 관련하여 B..
[Compose] Tooltip UI를 사용해보자. 보통 실무를 진행하게 되면 디자이너의 요청에 따라 여러 가지 UI를 만들 수밖에 없는데, 이번에는 Tooltip UI를 만들어보게 되었다. 이전에 포스팅 했었던 Flexbox Layout에 들어가 있는 아이템을 클릭했을 때 Tooltip이 뜨면서 추가적인 데이터를 노출시켜주어야 하는 케이스였다. 그에 따라서 Tooltip을 구현할 수 있는 방법을 찾아서 적용을 해보았는데, 일반적으로 Tooltip이 들어가는 경우에는 lazy 하게 데이터가 들어가는 케이스가 드문지, Flexbox Layout 구현에 대한 이해가 부족한지 모르겠지만 다양한 이슈가 발생하였다. 직접 Tooltip을 구현해서 사용하게 되면 위치를 계산하고 레이아웃을 그려줘야 하는데 Flexbox Layout의 경우 아이템의 위치가 UI가 그려..
[Git] Git에서 Head에 잘못 커밋했을 때 커밋 가져오는 방법 최근에 필자가 실무를 진행하면서 난생처음으로 check out을 한 상태로 작업을 진행하고 커밋을 하는 일이 발생했다. 처음 있던 일이었고, 그냥 당연히 sourceTree에서 커밋 리스트로 볼 수 있겠지라고 생각하고 원래 작업을 하려고 했던 브랜치로 체크아웃을 하는 순간, checkout 된 상태에서 작업한 리스트가 모두 안 보이는 것이 아닌가! 멘탈을 잡고 방법을 찾아보다 터미널을 사용해서 git에 commit 한 List를 가져오고, check out 하여 커밋을 가져오는 방법을 찾았고, 앞으로도 다양하게 사용할 수 있을 것이라 생각되어 포스팅을 하고자 한다. 필자처럼 소스트리나 포크같은 Git GUI 툴을 메인으로 사용하지 않는 사람이라면 다들 알고 있을 법한 방법이지만, 그렇지 않은 사람들에게 ..
[Compose] Coil을 사용하여 벡터파일인 SVG Image을 불러오는 방법. (feat. GIF Image) 개발을 하면서 이미지 파일을 사용하다 보면 어렵지 않게 SVG 파일을 사용할 수 있다. SVG는 Scalable Vector Graphics의 약자로 2 차원 벡터 그래픽을 표현하기 위한 XML 기반의 파일 형식이다. JPEG, PNG와 함께 자주 사용되는 이미지 파일 형태로, SVG는 특히 해상도를 대응해야 하는 복잡하지 않은 이미지 파일, 아이콘 등에 자주 사용한다. 필자도 실무를 진행하면서 SVG 파일을 자주 사용해왔는데, 생각해 보면 이번 이슈를 만나기 전까지는 SVG 파일은 resource file로 로컬에 저장해 두고 불러오는 형식으로만 사용을 했었다는 것을 알 수 있었다. 지금까지 Image load library로는 glide만 사용하고 있었는데, Glide에서는 별도의 작업을 해주지 않으..
[Compose] Text Style에 em 단위를 사용해보기. Compose를 사용해 UI를 그리다 보면, 다양한 Style을 가지고 있는 Text 뷰를 그리게 된다. 이번에 업무를 진행하다 Text에 대한 디테일한 Style을 조정하다가 지금까지 사용해 왔던 글자의 크기 단위인 sp를 사용하지 않고, 기존에서 몇 % 와 같이 배율을 통해 Text의 style을 조정해야 하는 케이스가 발생했다. 비율을 통해 Text style을 조정하려다보니 Compose에서는 sp뿐 아니라 em의 단위가 있다는 것을 발견하여 한번 사용해 보았다. 우선, em의 단위란 무엇인가부터 확인해 보자. 저번에도 확인했었던 TextUnit에 대한 설명을 보면 다음과 같이 나와있다. This unit can hold either scaled pixels (SP), relative font s..