Kotlin

이미지 로딩 라이브러리 중 하나인 Colil을 Compose UI에서 로딩 시, 실패했을 경우의 Error를 확인하기 위한 방법입니다. val painter = rememberAsyncImagePainter( model = ImageRequest.Builder(context).data(item.imageUrl) .placeholder(R.drawable.blank_ad).build())인자로 받은 item의 imageUrl을 통해 이미지를 로딩합니다. 물론 manifest에 인터넷 사용 권한이 허가되어 있는지 또한 반드시 체크해 주세요.로딩했는데, placeholder의 Drawable로 표시되면 뭔가 문제가 있는 것이겠지요? val state = painter.statepainter의..
Dialog에서 기존 XML 기반 View에 ComposeView를 병합하는 작업을 진행하던 중에 아래와 같은 오류를 마주쳤습니다.java.lang.IllegalStateException: ViewTreeLifecycleOwner not found from android.widget.FrameLayout{854b4dc V.E...... ......I. 0,0-0,0 #7f0a0897 app:id/rootLy} at androidx.compose.ui.platform.WindowRecomposer_androidKt.createLifecycleAwareWindowRecomposer(WindowRecomposer.android.kt:352) at androidx.compose.ui.platform.Window..
· Coding Test
1 이상 n이하의 소수를 오름차순으로 출력하는 프로그램을 작성해 보세요. 소수 판별에서 에라토스테네스의 체 기법이 많이 활용되고 있습니다.에라토스테네스의 체란?2부터 n까지의 모든 숫자를 나열합니다.현재 숫자를 소수로 표시하고, 현재 숫자의 배수를 모두 지웁니다.남아있는 숫자 중에서 다음 소수를 선택하고 2번 과정으로 돌아갑니다.n의 제곱근까지 반복하면 모든 소수가 남습니다.val isPrime = BooleanArray(n + 1) { true }isPrime[0] = falseisPrime[1] = false일단 모든 값을 소수라고 가정해 놓고 소거법 시키는 것과 비슷합니다.0과 1은 소수가 아니므로 false로 설정합니다. for (i in 2..n) { if (isPrime[i]) { ..
· Coding Test
https://www.acmicpc.net/problem/10431 초등학교 선생님 강산이는 아이들을 데리고 단체로 어떤 일을 할 때 불편함이 없도록 새로 반에 배정받은 아이들에게 키 순서대로 번호를 부여한다. 번호를 부여할 땐 키가 가장 작은 아이가 1번, 그다음이 2번,... , 가장 큰 아이가 20번이 된다. 강산이네 반 아이들은 항상 20명이며, 다행히도 같은 키를 가진 학생은 한 명도 없어서 시간이 조금 지나면 아이들은 자기들의 번호를 인지하고 한 줄로 세우면 제대로 된 위치에 잘 서게 된다.하지만 매년 첫 며칠간 강산이와 강산이네 반 아이들은 자기가 키 순으로 몇 번째인지 잘 알지 못해 아주 혼란스럽다. 자기 위치를 찾지 못하는 아이들을 위해 강산이는 특별한 방법을 생각해 냈다.우선 아무나 한..
· Coding Test
영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다.성의 크기와 경비원이 어디 있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오.첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는. 은 빈칸, X는 경비원이 있는 칸이다.첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다.https://www.acmicpc.net/problem/1236 처음에 단순하게 Column만 바라보고 단순하게 풀었으나 Row에 대해서도 모두..
안드로이드에서 Balloon 툴팁 구현하실 때, 아마 알고 계신 분들도 많겠지만 해당 라이브러리를 사용하는 경우가 많습니다.https://github.com/skydoves/Balloon GitHub - skydoves/Balloon: :balloon: Modernized and sophisticated tooltips, fully customizable with an arrow and animations for:balloon: Modernized and sophisticated tooltips, fully customizable with an arrow and animations for Android. - skydoves/Balloongithub.com 기존 View 방식이나 Compose 방식을 모두..
· Coding Test
문제 : 행의 크기가 정수 n으로 주어집니다. 행의 크기가 n인 파스칼 삼각형을 출력하는 프로그램을 작성해 보세요. 파스칼 삼각형이란 다음과 같은 형태로 나타나며, (i, j)에 적힌 숫자가 (i - 1, j - 1)에 적힌 숫자와 (i - 1, j)에 적힌 숫자의 합으로 나타납니다.n = 5일때의 예  파스칼 삼각형 구조를 이해해 보자면, 각 행의 첫 번째와 마지막 요소가 1입니다.그리고 중간의 요소가 바로 윗부분 2개 요소의 합이 됩니다. 로직은 파스칼 삼각형을 저장할 2차원 배열을 선언 후, 2차원 배열에 윗부분 두 개 값을 더하여 넣어줍니다.fun generatePascalTriangle(n: Int): List> { // 파스칼 삼각형을 저장할 리스트 초기화 val triangle =..
안드로이드에서 mp4 형식의 사용 방법 가이드 영상 파일을 넣어야 하는 작업이 생겼습니다.새로운 화면을 만드는 겸 Compose를 기반으로 mp4 영상을 넣어봤네요. ExoPlayer라는 오픈 소스 미디어 플레이어 라이브러리를 활용했습니다.https://developer.android.com/media/media3/exoplayer/hello-world?hl=ko 시작하기  |  Android media  |  Android Developers이 페이지는 Cloud Translation API를 통해 번역되었습니다. 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 도움말: 시작하는 또 다른 방법은 ExoPlayer Codedeveloper.android.com 먼저..
소수점 반올림 처리 표시에 사용되는 DecimalFormat import java.text.DecimalFormat import java.math.RoundingMode fun main() { val a = 13 val b = 0.165 val decimalFormat = DecimalFormat("0.000000") // 소수점 아래 6자리까지, 부족한 부분은 0으로 채움 decimalFormat.roundingMode = RoundingMode.DOWN val res = decimalFormat.format(a * b) println("FormatDouble -> $res") // 출력: "FormatDouble -> 2.145000" } (#는 해당 위치에 숫자가 없으면 아무것도 표시하지 않지만, ..
데이터 필터링 작업을 하던 중에 조금 특수한 케이스를 처리해야 하는 상황이 생겨 몇 가지 컬렉션 함수를 실무에서 사용했습니다. 어떤 boolean 값으로 구분이 가능한 데이터 리스트가 존재하고, 이 중 false인 부분을 다시 특정 날짜값에 의해 그룹화하여 어떤 필드의 최대 값을 가지고 있는 요소만 살리도록 하는.. 그런 로직이 필요했습니다. 일단 먼저 boolean 값 구분을 위해 partition 함수를 사용했습니다. 명시한 조건에 따라 리스트를 분리해 줍니다. 저는 true/false 조건이기 때문에 변수 2가지로 리스트를 구분할 수 있었습니다. val (fineDatas, nonFineDatas) = allDatas.partition { it.isFine() } 다음으로 nonFineDatas를 ..
SeungYong.Lee
'Kotlin' 태그의 글 목록