일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- map
- getChangePayload
- AWS EC2
- Python
- ExoPlayer
- video caching
- android exoplayer
- ansi2html
- FastAPI
- build with ai
- ChatGPT
- ktor client
- 시행착오
- 유튜브
- kotlin list
- 안드로이드
- android ktor
- DiffUtil.ItemCallback
- doc2vec
- llm
- list map
- 독서
- ListAdapter
- ListAdapter DiffUtil
- ktor api call
- exoplayer cache
- kotlin collection
- android
- android custom view
- 스피너
- Today
- Total
목록TIL - 안드로이드 (33)
버튼 수집상
binding.webView.setOnScrollChangeListener { _, _, scrollY, _, oldScrollY -> if (abs(scrollY-oldScrollY)
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cT2gZW/btsu2cJfdyG/KxvVeTXIp5LSAJVuUcMhh1/img.gif)
저번에 적은 1편에서 썼던 내용에 보충. [안드로이드] ExoPlayer 비디오 캐싱하기 배경 무한재생되는 30초 내외 분량의 비디오에서 트래픽이 너무 쌓인다고 캐싱이 제대로 되고 있는지 확인 요청이 들어왔다. ExoPlayer는 캐싱 처리를 따로 해줘야 하는데, 기존 코드에서 설정하고 collectingbuttons.tistory.com 안드로이드 스튜디오 네트워크 인스펙터 확인하기 운영중인 앱에서 동일한 동영상이 반복재생될 때마다 트래픽이 발생했다. 무슨 데이터를 주고 받는지는 네트워크 인스펙터를 켜서 리퀘스트/리스폰스 정보를 보면 알 수 있다. 위 이미지에서 mp4 파일들이 일정 간격으로 다운받아지는 것을 볼 수 있다. Status code 206은 데이터를 부분 다운받았다는 뜻이다. 혹시 동영상 ..
https://developer.android.com/studio/preview/studio-bot Meet Studio Bot | Android Studio | Android Developers Learn how to improve your coding productivity with Studio Bot. developer.android.com 스튜디오 봇 Studio Bot은 안드로이드 개발을 위한 코딩 파트너입니다. 안드로이드 개발 질문을 답해줌으로써 생산성을 높여주는 안드로이드 스튜디오 내 대화형 기능입니다. 자연어를 해석할 수 있는 AI가 탑재돼있어서 개발 질문을 영어로 물어볼 수 있습니다. 스튜디오 봇은 개발자들이 코드를 작성하고, 관련 리소스를 찾고, 최적의 방법론을 배우고, 시간을 아낄 수..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/x3Dfu/btsrjrehlc6/BXJlilP1L1iaC3oywJgliK/img.jpg)
1. 이벤트를 한 곳에서 일괄 처리하는 구조가 관리하기 좋다. 이벤트(주로 클릭)을 한 번에 처리하는 EventBus 같은 객체를 활용한다. 현직 회사 제품의 경우, 이벤트를 MutableLiveData 로 선언해서 사용처에서 observe한다. 이벤트를 일괄 관리하면 뷰/뷰홀더마다 인터페이스나 리스너를 각개로 선언할 필요가 없다. 하지만 원래부터 이런 구조가 아니었다면 당장 바꾸기엔 무리가 있을 것이다.. 참고 MVVM의 ViewModel에서 이벤트를 처리하는 방법 6가지 지금 개발하시는 코드에서 ViewModel의 이벤트 처리를 어떻게 하고 계신가요? 헤이딜러에서 LiveData -> SingleLiveData -> SharedFlow -> EventFlow로 이벤트 처리 방법을 변화 하기까지 과정을..
배경 Compose를 아직 도입하지 않은 xml 베이스의 프로젝트에서도 코드로 뷰를 생성해서 쓸 때가 있다. 그럴 때 커스텀뷰를 만들면 반복되는 코드를 은닉하면서 코드 가독성이 좋아진다는 장점이 있다. 커스텀뷰를 만들면서 겪었던 시행착오들과 기억해야할 사항들을 정리해보겠다. 뷰 생성자를 오버라이딩 해준다. class CustomDropDown @JvmOverloads constructor( mContext: Context, attrs: AttributeSet? = null, defStyle: Int = 0 ) : LinearLayout(mContext, attrs, defStyle) { //... } @JvmOverloads 어노테이션을 붙이면 mContext, attrs, defStyle로 만들 수 있..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RanpU/btsqBwNzXMH/AuvHwgra8ZKmulzL34Ygi0/img.png)
배경 무한재생되는 30초 내외 분량의 비디오에서 트래픽이 너무 쌓인다고 캐싱이 제대로 되고 있는지 확인 요청이 들어왔다. ExoPlayer는 캐싱 처리를 따로 해줘야 하는데, 기존 코드에서 설정하고 있지 않았다. 확인하기 디버거를 연결한 다음 안드로이드 스튜디오 하단의 App Inspection > Network Inspector 를 켰다. 최초의 요청 이후로도 비디오가 반복되며 재생될 때마다 통신이 오고감을 알 수 있다. 빨간 박스가 그려진 데이터 사이즈는 영상에 따라 달랐다. 기존 코드는 아래와 같다. // player 초기화 private fun initPlayer() { // 싱글턴 오브젝트 ExoPlayerInfo.instance.apply { player = SimpleExoPlayer.Bui..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3hJuU/btspxa5J7ra/lkZBXq8QPZpFeK99N7lnYk/img.png)
배경 카드뷰 그림자에 색이 들어가게 해달라는 요청이 있었다. 기존에 outlineSpotShadowColor 라는 옵션이 있으나 API 28부터만 지원했다. 그래서 카드뷰를 직접 구현해보기로 했다. 요구사항 1. 카드뷰처럼 elevation, radius 값 지정이 돼야 한다. 2. 그림자 색 지정이 돼야 한다. 요구사항을 충족시키려면 onDraw()로 구현할 수 밖에 없어보였다. attrs.xml (~/res/values) attrs를 선언하면 xml 코드의 app namespace에서 값을 설정할 수 있다. format을 모르겠을 땐, xml에서 다른 어트리뷰트를 cmd + 클릭해서 확인해보면 된다. 시도1 CustomCardView.kt (커스텀 카드뷰의 루트) class CustomCardView..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lglHY/btso937uByC/aYwpGgDzWGYNMUQxLXdW8K/img.gif)
지난 글에서 ListAdapter DiffUtil 의 getChangePayload 활용법에 대해 적었다. [안드로이드] ListAdapter DiffUtil 제대로 쓰기 - 2 1편에서 ListAdapter에 submitList를 하면서 기존 리스트를 업데이트할 때 리스트 깊은 복사deep copy를 해야 하는 이유에 대해 적었다. 이번엔 ListAdapter DiffUtil의 각 함수를 자세히 알아보겠다. 샘플 코드 collectingbuttons.tistory.com 이제 DiffUtil을 활용해서 expand - collapse 되는 리스트 UI를 만들어보겠다. 임의로 만든 모의데이터 기반이라 도움이 될지는 모르겠다. 샘플 UI 구조 상위 카테고리 ▲ |_ 하위 카테고리 |_ 하위 카테고리 상위 ..