프로그래밍/Android

[안드로이드] 카카오웹툰 앱에서 쓴 오픈소스 라이브러리를 알아보자

Lou Park 2021. 9. 7. 22:13

 

카카오 웹툰이 처음 나왔을때, 나도 부정적인 시선으로 보는 사람들 중에 하나였다. 웹툰을 보지는 않지만 예전에 웹툰을 봤을때 요일별로 나눠져있는게 그야말로 정석이었고, 앱을 켤때도 [O요일 웹툰 봐야지!] 라는 생각으로 켜곤했다. 하지만 카카오 웹툰은 그 정석과는 다른 방향으로 개발되었다. AI 추천 웹툰이 먼저고, 요일별 웹툰은 조금 더 숨겨져있다.

 

새로운 것에대한 거부감일지, 정말로 유저가 원하는 것과 맞지 않아서일지는 조금 더 두고보면 알겠지만, 개발자로서 카카오 웹툰의 혁신적인 UI/UX는 분명 엄청났다! 가장 궁금한건 역시 "어떻게 만들었을까"다.

 

카카오 웹툰을 다운받아서 APK 파일을 추출 후 압축을 해제하면 사용한 에셋들이 나온다.

그중에서 oss_notice.html이라는 카카오 웹툰 앱을 개발할때 사용한 오픈소스 라이브러리들이 정리된 파일이있는데, Android 프레임워크나 많이들 쓰는 Retrofit, Glide 이런것들을 제외하고 몇가지 처음보는 라이브러리들이 있어서 가지고 왔다. dex2jar로 디컴파일 해서 알아낸 라이브러리도 포함시켰다.


SmartTabLayout: ViewPager 연동 TabLayout

https://github.com/ogaclejapan/SmartTabLayout

 

카카오 웹툰에서 사용한 것과 유사한 Demo

뷰페이저와 연결하여 뷰페이저의 스크롤에따라 Tab도 움직이게 만들면서, 커스터마이징을 지원하는 탭 레이아웃 라이브러리다.

 

 

LRecyclerView: 향상된 RecyclerView

https://github.com/jdsjlzx/LRecyclerView

중국어로 적혀있어서...구글 번역을 돌려보니 HeaderView와 FooterView, 당겨서 새로고침, 페이징, 로딩, 슬라이드하여 삭제 등을 지원하는 RecyclerView라고한다. 이게 왜 없을까 싶을정도로 자주쓰는 요소들인데 지원해준다고하니 앱 기본 RecyclerView대신 쓰면 매우 유용할 것 같다.

 

 

Zip4j: 유일한 Java Zip 압축 라이브러리

https://github.com/srikanth-lingala/zip4j

귀찮은 Input streams/output streams 어쩌구저쩌구하는 수십줄의 보일러플레이트 코드를 사용하지 않고 단 한줄만으로 zip 파일을 다룰 수 있게 해주는 라이브러리다.

 

 

Alpha Movie: 투명도가 있는 영상을 지원하는 비디오 라이브러리

https://github.com/pavelsemak/alpha-movie

제곧내...쉐이더가 영상의 특정색 부분을 투명한 픽셀로 변환한다. 기본 값은 초록이지만, 원하는 색상으로 설정할 수 있다.

 

 

RollDigitalTextView: 텍스트뷰 카운트 다운/업 롤링처리

https://github.com/zzhouj/Android-RollDigitalTextView

다른 라이브러리의 샘플. 대충 텍스트뷰가 Rolling한다는 말은 이런것

 

롤링하는 텍스트뷰 구현을 위한 라이브러리이다. 만들어진지 8년이나 된 데다 Github star 수가 4개로 상당히 작은 편인데 사용했다.

 

 

APNG4Android: APNG를 재생할 수 있는 라이브러리

https://github.com/penfeizhou/APNG4Android

APNG는 1987년에 만들어진 Gif 포맷보다 용량/화질 측면에서 더 나은 움직이는 이미지 포맷이다. 이 라이브러리는 안드로이드에서 APNG는 물론, Animated Webp, Gif 재생을 지원한다.

 

 

NumberPicker: 커스터마이즈 가능한 이쁜 넘버 피커

https://github.com/ShawnLin013/NumberPicker

 

음 사진 한장으로 설명되는 군.

안드로이드에서 또 왜 이게 없을까 하는게 있는데, 바로 쓸만한 NumberPicker다. iOS에서 뚜루루룩~넘어가는 그 이쁜 NumberPicker를 안드로이드에서는 찾기어려운데, 이 라이브러리가 그 씁슬함을 달래준다.