안드로이드 (26) 썸네일형 리스트형 RecyclerView를 데코해보자 ! - ItemDecoration ItemDecoration이란? RecyclerView에는 스크롤 막대, 구분선 등 decoration 요소들이 있다. ItemDecoration은 RecyclerView의 아이템과 화면을 렌더링하는 동안 불필요한 뷰를 따로 생성하지 않고 모든 decoration 요소를 그릴 수 있도록 도와주는 클래스 입니다. 주요 메서드 1. onDraw(c:Canvas, parent: RecyclerView, state: RecyclerView.State) RecyclerView에 제공된 Canvas를 그리는 메서드이며, 여기서 구현한 내용들은 ItemView가 그려지기 전에 먼저 그려집니다. Canvas: 기본적으로 필요한 decoration을 그릴 수 있는 캔버스 val dividerTop = child.bott.. TextView로 CustomButton을 만든다고!? 내용 요구사항에 맞게 Button에 padding 값을 줬는데 디자인과 너무 상이한 버튼이 나왔다. vertical과 horizontal의 padding이 각각 9dp, 12dp인 얄상한 모양의 버튼이다. 위의 피그마 이미지와는 육안으로도 다른 것이 보일 정도로 뚱뚱한 버튼이 생성이 되었다. 오른쪽 사진을 보면 알 수 있듯이 paddingHorizontal은 12로 주고 paddingVertical은 9로 요구사항과 동일한 값을 적용한 상태였다. 해결 1. Button attribute minHeight, minWidth 오버라이드 해주기 (feat. 구글링) 2. Button 대신 TextView 사용 (feat. issac) Why? “ 버튼은 왜 뚱뚱하게 나왔었고 어떻게 해결이 된걸까?” Butto.. Glide 관찰기 (Feat. 속도, 캐시) Glide Glide에 관한 예제는 많이 나와있으니 내가 궁금했던 것들에 적어보고자 한다. Glide는 Android용 이미지 로딩 라이브러리이다. '이미지 로딩 라이브러리'하면 Picasso도 생각이 나지만 gif 파일을 지원하지 않고, Glide가 성능적으로 더 좋다는 평이 많아서 Glide를 더 사용하는 것 같다. Glide가 Android에서 고려하는 것 중 가장 중요하게 생각하는 것은 '속도'와 '버벅거림'이라고 한다. 이것을 정리하면 이미지(들)를 가능한 부드럽고 빠르게 스크롤할 수 있게 하는 것이라고 생각한다. 속도 문서를 봤지만 당연하게도(?) 어떻게 구현되어 있는지는 안 나와있었고, 이미지 로딩이 최대한 빠르고 원활하게 하기 위해 구현한 단계는 나와있었다. 자동 다운 샘플링과 캐싱을 통해.. [ Android ] Proguard 초간단 정리 1. Proguard란? 힘들게 작업한 코드들을 남이 디컴파일해서 카피한다면, 허무(?)해질뿐 만 아니라 회사 입장에서는 엄청난 손해를 볼 수 있습니다. 그래서 코드 난독화라는 것이 필요한데, 이러한 코드 난독화를 해주는 서비스 중 하나가 안드로이드 스튜디오에서 기본으로 제공하는 Proguard입니다.(유료버전: Dexguard) 2. 사용 이유 위에서 말한 코드 난독화도 필요하지만, 앱의 크기를 줄이는 것 또한 배포할 앱 개발에 있어서 빼놓을 수 없는 부분입니다. 1) 코드 난독화를 통해 디컴파일(Decompile) 시 소스 코드가 노출되는 것을 방지할 수 있다. 코드 난독화: 워딩 그대로 작성된 코드를 읽기 어렵게 만드는 작업. ex) 알고리즘이나 로직, 자료형, 변수명 등을 보기 어렵게 만들거나 숨.. [ Android ] JAR 와 AAR(feat. 이클립스에서 안드로이드 스튜디오로) TMI 회사에서 저에게 주어진 첫 미션은 이클립스로 구현되어있던 안드로이드 프로젝트를 안드로이드 스튜디오로 마이그레이션 하는 작업이었어요. (바쁘신 분은 아래로 쭉 내리시면 됩니다!) 너무너무너무 고단했습니다... ( 마이그레이션하고는 그닥 상관없지만,,,한 클래스 파일에 6천줄!!!!!!!!!!!!!!!!!!!!!!!!! 어질어질..) 이클립스로는 한 번도 안드로이드를 개발해본 경험이 없었거니와 안드로이드 실력도 아직은 베이비 개발자 수준인지라 자바와 xml 코드는 상관없었지만 gradle에서 본 적도 없는 코드들과 알아들을 수 없는 주석들이 상당했거든요. 그래도 여차저차해서 마이그레이션에 성공했습니다! 이 과정에서 가장 기억에 남는것이 있었는데요. 바로 JAR와 AAR의 차이로 생긴 이슈입니다! 이것.. [ Android ] PNG와 SVG dp, dpi등에 대한 글을 읽고 보시면 더 좋을 것 같아요! 개발을 할 때 사용하는 디자인 포맷의 종류는 png, svg, gif, lottie가 일반적이고, 이미지를 위한 png, svg, 9-patch(나인 패치)와 애니메이션을 위한 lottie로 나누어집니다. 이번 글에서는 PNG와 SVG에 대해서만 다뤄보겠습니다. ( jpg, gif도 사용하기는 하지만 안드로이드에서는 권장하지 않습니다) 1. PNG png의 경우 사이즈가 픽셀단위로 정의되기 때문에 해상도에 따라 이미지의 사이즈가 의도와 다르게 바뀔 수 있습니다. 이를 방지하기 위해 안드로이드에서는 drawable 폴더를 각 dpi값에 따라 나누어 놓았는데, 기본 제공되는 dpi는 아래를 참고하시면 될 것 같아요. 안드로이드에서 제공하는 기본 .. [ Android ] DP란? SP? PX!? DPI..? 안드로이드 개발을 하다보면 이 화면을 많이 보셨을 거에요. 이렇게나 많은 단위들이 있지만 보통 dp와 sp를 많이 사용하기에 별로 신경을 안 쓰고 있었는데요. 이번에 DP와 SP에 대해 정리하며 다른 단위들도 간단하게 설명하고자 합니다. 1. DP ( Density-independent Pixel ) DP는 디스플레이의 해상도(밀도)와 상관없이 다룰 수 있는 단위라고 보시면 됩니다. 즉, 화면의 크기가 달라도 동일한 비율로 보여주기 위해 안드로이드에서 정의한 정확한 단위이며 큰 화면, 작은 화면에 상관없이 같은 크기로 나타냅니다. 사용중인 화면의 실제 밀도에 따라 시스템이 런타임에 dp단위의 모든 확대/축소를 투명하게 처리한다. 그래서 화면의 크기가 다양한 안드로이드에서는 dp가 자주 쓰이곤 하죠. 2... [ Android ] Foreground Service 와 BackGround Service 안드로이드 개발을 하다보면 백그라운드 실행이 필요한 작업을 수행해야될 때가 있는데요. 이럴 때 메인 스레드가 아닌 서브 스레드를 생성하여 사용하게 됩니다. 하지만 서브 스레드로만 작업을 수행하게되면 액티비티나 프래그먼트에서 onDestroy()가 호출 되거나, 서브 스레드의 작업이 끝났을 때 해당 Activity가 존재하지 않는 상태라면 UI 갱신이 불가합니다. 이러한 경우에 필요한 안드로이드의 컴포넌트가 바로 Service입니다. 서비스는 안드로이드 컴포넌트 중 하나로, 기본적으로 메인 스레드에서 실행되며 UI가 없습니다. 이 서비스에서의 백그라운드 스레드는 개발자가 직접 관리를 해야하는데 서비스에는 백그라운드 서비스와 포어그라운드 서비스, 바인드 서비스가 있는데 이번 글에서는 백그라운드 서비스와 포그.. 이전 1 2 3 4 다음