일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kotlin list
- ktor api call
- ExoPlayer
- list map
- map
- 유튜브 요약
- getChangePayload
- FastAPI
- build with ai
- AWS EC2
- android exoplayer
- 안드로이드
- Python
- ListAdapter
- ktor client
- exoplayer cache
- 스피너
- android
- video caching
- llm
- 시행착오
- kotlin collection
- doc2vec
- ChatGPT
- ListAdapter DiffUtil
- Zsh
- android custom view
- android ktor
- 유튜브
- DiffUtil.ItemCallback
- Today
- Total
목록TIL - 안드로이드 (33)
버튼 수집상

안드로이드 웹뷰에서 setSupportMultipleWindows를 true로 세팅하면 웹에서 window.open()로 이동할 때 WebChromeClient의 onCreateWindow 함수를 타게 된다. 웹뷰 설정을 알고자 간단한 웹페이지와 앱을 만들어 테스트해봤다. 웹페이지의 구조는 이렇다. ① =새창=> ② => ③ => ① =새창=> ② => ③ => ① =새창=> ② => ③ ... 기본웹뷰 세팅 BaseWebview.kt import android.annotation.SuppressLint import android.content.Context import android.util.AttributeSet import android.webkit.CookieManager import androi..

위처럼 모서리가 둥글고 살짝 그림자가 지는 자동완성 검색어 UI를 그려주기 위해 커스텀 뷰를 만들었다. 뷰바인딩 세팅하기 build.gradle.kts(:app) plugins { id("com.android.application") id("org.jetbrains.kotlin.android") } android { // 생략.. buildFeatures { viewBinding = true } } 자동완성 커스텀뷰의 베이스 뷰 xml layout_auto_complete.xml 자동완성 커스텀뷰의 베이스 뷰 배경 drawable background_auto_complete_shadow.xml 그림자 레이어를 쌓으면서 위 레이어에서부터 순서대로 넓은 영역 -> 좁은 영역 연한 색 -> 진한 색 으로 그려..

배경 바코드리더기 가이드 뷰가 각진 사각형에서 둥글게 바뀌었다. 그런데 배경 필터에 (뷰파인더 영역) 모서리가 하얗게 남았다. 저 하얀 모서리를 둥글게 메꿔보겠다. 기존의 DecroatedBarcodeView 화면 (view_barcode_scanner.xml) 바코드 리더기는 zxing 라이브러리를 쓰고 있다. ViewFinderViewEx는 zxing에서 제공하는 ViewfinderView를 상속해서 만든 커스텀뷰이다. 기존의 커스텀뷰 (ViewFinderViewEx.kt) // zxing 라이브러리의 뷰파인더 UI 상속해서 커스텀 class ViewFinderViewEx @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null..
이전 글 [안드로이드] Retrofit 대신 Ktor로 Api 호출해보기 - 1 배경 KMM (Kotlin Multiplatform Mobile) 이 여기저기서 많이 언급되고 있다. 줄곧 XML을 쓰다가 마침 Compose 프로젝트를 할 기회가 생겼다. 이 기회에 Ktor도 써보면 어떨까 생각이 들어서 간단하게 써보았다 collectingbuttons.tistory.com 기존에 썼던 OkHttpClient.Builder 설정대로 Ktor HttpClient를 설정해보겠다. 요구사항 - 상용 api 호출 - response / request 로그 - Flipper 연동 -> OkHttpClient만 지원하는듯 - Flow 리턴 - connect / write / read 타임아웃 - 헤더 cookie 설..
배경 KMM (Kotlin Multiplatform Mobile) 이 여기저기서 많이 언급되고 있다. 줄곧 XML을 쓰다가 마침 Compose 프로젝트를 할 기회가 생겼다. 이 기회에 Ktor도 써보면 어떨까 생각이 들어서 간단하게 써보았다. Philipp Lackner 의 아래 영상을 참고했다. 그런데 예제에서 쓰는 HttpClient.get() 함수의 시그니처가 달랐다. 예제에선 io.ktor:ktor-client-core-jvm:1.6.3에서 아래 함수 호출. /** * Executes a [HttpClient] GET request, with the specified [scheme], [host], [port], [path] and [body]. * And allows to further conf..
배경 텍스트가 길어졌을 때 말줄임표와 함께 & more가 노출되게 해달라는 요구사항이 있었다. brand1, brand2, brand3, brand4 ❌ brand1, brand2, b… ✅ brand1, br… & more TextView의 텍스트 길이가 화면 너비를 넘어갈 때 처리를 위해 ellipsize 옵션이 제공된다. ellipsize 예시 "aaabbbcccddd" none aaabbbccc start …bcccddd middle aaa…cddd end aaabbbc… marquee 오른쪽에서 왼쪽으로 흐르는 효과 단, 아래 조건 필요 textView.isSelected = true textView.isSingleLine=true (singleLine대신 maxLines=1로 잡는 건 안 됨..

지난 글 링크 [안드로이드] ListAdapter DiffUtil 제대로 쓰기 - 3 지난 글에서 ListAdapter DiffUtil 의 getChangePayload 활용법에 대해 적었다. [안드로이드] ListAdapter DiffUtil 제대로 쓰기 - 2 1편에서 ListAdapter에 submitList를 하면서 기존 리스트를 업데이트할 때 리스트 깊은 collectingbuttons.tistory.com 지난 글에 이어서 DiffUtil.ItemCallback의 getChangePayload 함수를 이용해서 expand - collapse 되는 리스트 UI를 만들어보겠다. UI 구조 상위 카테고리 ▲ |_ 하위 카테고리 |_ 하위 카테고리 상위 카테고리 ▼ 상위 카테고리 ▼ 상위 카테고리 ▼..
안드로이드는 리눅스 프로세스에서 돌아간다. 프로세스는 시스템이 메모리를 회수하기 reclaim 전까지 코드가 계속 돌아가야할 때 생성된다. 프로세스의 생명주기는 어플리케이션이 직접 관리하지 않는다. 중요한 작업중인 프로세스를, 메모리 관리 차원에서 시스템이 kill해버리지 않도록 안드로이드 컴포넌트를 제대로 사용해야 한다. 1. Processes and app Lifecycle (링크) Process 종류 역할 Android Component foreground process 유저가 현재 하는 일 담당 우선순위 가장 높음, 가장 마지막에 kill 된다 Activity (onResume 이후) Broadcast Receiver (onReceive 이후) Service (생명주기 동안) visible pro..