Kotlin

이미지 로딩 라이브러리에는 다양한 종류가 있습니다. Picasso, Glide, Coil.. 대표적으로 이 3가지가 많이 사용됩니다.Coil 특징 몇 가지를 정리해 보자면1. 주로 사용되는 3가지 라이브러리 중 이미지 로딩 속도가 가장 빠릅니다.2. Coroutine 기반으로 비동기 이미지 로딩을 처리합니다. 메모리 성능이 향상되고 누수 확률도 줄어듭니다.3. Glide보다 속도가 빠르면서도 Glide를 많이 참조했기 때문에 캐싱, 오류 처리, 이미지 변환 등의 기능 제공에도 문제가 없습니다. 오늘은 간단하게 라이브러리 추가 및 컴포즈에서 이미지를 로딩하는 방법까지 확인해 보겠습니다.먼저 Gradle에 의존성 추가를 진행합니다. implementation "io.coil-kt:coil-compose:2...
· Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/12915?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [문제]문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. [제한 조건]strings는 길이 1 이상, 50 이하인 배열입니다...
2차원 배열을 1차원으로 정리하는 방법들을 정리해 봤습니다.코테에서도 많이 활용되는 부분입니다. - 중첩된 for 루프를 사용하여 변환하기fun flattenArray(twoDArray: Array): IntArray { val rows = twoDArray.size val cols = twoDArray[0].size val oneDArray = IntArray(rows * cols) var index = 0 for (i in 0 until rows) { for (j in 0 until cols) { oneDArray[index++] = twoDArray[i][j] } } return oneDArray}fun main() ..
· Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/12944 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [문제]정수를 담고 있는 배열 arr의 평균값을 return 하는 함수, solution을 완성해 보세요.arr은 길이 1 이상, 100 이하인 배열입니다. arr의 원소는 -10,000 이상 10,000 이하인 정수입니다. [입출력 예] [풀이]주어진 배열의 요소를 모두 더한 후에 해당 배열의 사이즈만큼 나눠줍니다.예시처럼 소수점으로 return 되는 경우를 고려하여 문제 반환 타입은 Double이..
· Coding Test
https://school.programmers.co.kr/learn/courses/30/lessons/12932?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr [문제]자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를 들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. n은 10,000,000,000 이하인 자연수입니다. [입출력 예] [풀이]자연수 n이 주어지면 해당 숫자를 문자열로 변환합니다. n.toString()을 하면 결국 Char를 원소로 갖는 배열을 구성하게 됩니다. 그리고 해당 ..
안드로이드 컴포즈에서 Tab Bar를 구현하기 위해 고정 TabRow 또는 Scrollable TabRow가 사용됩니다.아주 기본적인 탭을 구성하기에는 빠르게 적용가능한 컴포저블입니다. 하지만, 원하는 스타일에 알맞은 커스터마이징 작업을 진행하기에는 제한적인 부분들이 있습니다.아래 기존의 Scrollable TabRow 코드를 확인해 보겠습니다.(탭의 width를 확장성 있게 가져가기 위해서 Scrollable TabRow를 선호합니다.)@Composablefun ScrollableTabRow( selectedTabIndex: Int, modifier: Modifier = Modifier, containerColor: Color = TabRowDefaults.primaryContainer..
리스트나 화면을 구성하는 동안의 Loading 상태에서 자주 사용되는 Shimmer View. 기존 XML 방식에서는 각종 라이브러리를 활용하여 많이 구현되었습니다.하지만 Compose에서는 아직 직접 구현이 필요한 듯하여 다른 분들의 코드를 참고하여 구현을 진행했습니다.먼저 위 이미지와 동일한 형태의 컴포저블을 구현해야합니다.스켈레톤 효과를 입혀줄 틀을 만들어주는 것입니다. @Composable fun PlaceholderItem() { Row( modifier = Modifier .fillMaxWidth() .padding(16.dp) .height(72.dp) ) ..
· Algorithm
https://www.acmicpc.net/problem/21930과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친 수(pinary number)라 한다. 이친 수는 다음의 성질을 만족한다.이친 수는 0으로 시작하지 않는다. 이친 수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다.예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친 수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되므로 이친 수가 아니다.N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오. 케이스를 몇 번 조사해서 점화식을 통해 풀어내야하는 DP 문제입니다..
이미지 로딩 라이브러리 중 하나인 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..
SeungYong.Lee
'Kotlin' 태그의 글 목록 (8 Page)