개발자 페이지에 나와 있는 wiki 정보는 해당 library 을 활용하는 데 도움이 됩니다. 끝까지 다 읽어 보면 좋기는 하겠지만, 긴급(?) 하게 작업을 해야 하는 경우에는 꼭 그럴 필요보다는 요약된 정보(?)를 활용해 보시는 것이 도움이 될 수 있습니다.
2. build gradle 설정
dependencies { // For Jetpack Compose. implementation("com.patrykandpatrick.vico:compose:2.0.0-alpha.22")
// For `compose`. Creates a `ChartStyle` based on an M2 Material Theme. implementation("com.patrykandpatrick.vico:compose-m2:2.0.0-alpha.22")
// For `compose`. Creates a `ChartStyle` based on an M3 Material Theme. implementation("com.patrykandpatrick.vico:compose-m3:2.0.0-alpha.22")
// Houses the core logic for charts and other elements. Included in all other modules. implementation("com.patrykandpatrick.vico:core:2.0.0-alpha.22")
// For the view system. implementation("com.patrykandpatrick.vico:views:2.0.0-alpha.22") }
앱 수준의 gradle 파일에는 이런 정도의 기술이 필요 합니다. android studio 가 korala 버전으로 넘어가고 gradle 버전 8.5 이상으로 넘어가면서 version 관리를 version catalog을 사용하는 방식으로 변경이 되면서 작성하는 방법이 달라지고 있습니다. 처음 보았을 때는 불편하지 않을까 하는 생각이 들기도 했지만, 익숙해지면 관리가 수월해집니다.
이번에는 version catalog 방식의 gradle 정보을 보겠습니다.
먼저 grable 폴더에 위치 하는 libs.versions.toml 파일의 작성 예시입니다. 버전은 이 글을 작성하는 시점이기 때문에 달라질 수 있습니다.
[versions] vico = "2.0.0-alpha.22"
[libraries] # For Jetpack Compose. vico-compose = { group = "com.patrykandpatrick.vico", name = "compose", version.ref = "vico" }
# For `compose`. Creates a `ChartStyle` based on an M2 Material Theme. vico-compose-m2 = { group = "com.patrykandpatrick.vico", name = "compose-m2", version.ref = "vico" }
# For `compose`. Creates a `ChartStyle` based on an M3 Material Theme. vico-compose-m3 = { group = "com.patrykandpatrick.vico", name = "compose-m3", version.ref = "vico" }
# Houses the core logic for charts and other elements. Included in all other modules. vico-core = { group = "com.patrykandpatrick.vico", name = "core", version.ref = "vico" }
# For the view system. vico-views = { group = "com.patrykandpatrick.vico", name = "views", version.ref = "vico" }
// compolse 에서 구현 되는 챠트 입니다. @Composable fun LineGraph() { val modelProducer = remember { CartesianChartModelProducer.build() } // 이 부분에서는 반복적으로 무의미한 숫자을 생성해 냅니다. // 아직 데이터가 없는 그래프 이기 때문에 임시 데이터을 생성해 내기 위해서 입니다. LaunchedEffect(Unit) { withContext(Dispatchers.Default) { while (isActive) { modelProducer.tryRunTransaction { /* Learn more: https://patrykandpatrick.com/vico/wiki/cartesian-charts/lay ers/line-layer#data. */ // 라인 챠트을 그리기 위해서 준비 합니다. lineSeries { repeat(Defaults.MULTI_SERIES_COUNT) { series( List(Defaults.ENTRY_COUNT) { Defaults.COLUMN_LAYER_MIN_Y + Random.nextFloat() * Defaults.COLUMN_LAYER_RELATIVE_MAX_Y } ) } } } // 이 부분을 풀면 반복 시간이 되었을 떄 다시 실행 됩니다. //delay(Defaults.TRANSACTION_INTERVAL_MS) } } }
// Color(0xffb983ff), Color(0xff91b1fd), Color(0xff8fdaff) // 챠트는 3개의 데이터을 이용해 그리는 것이라 구분 하기 위해서 color 을 선언 합니다. private val chartColors = listOf(smallGreen, smallYellow, largeGreen) // 챠트 하단에 표시될 제목 입니다. 데이터가 3개 이기 때문에 제목도 3개을 넣었습니다. private val legendString = listOf(R.string.walkStep,R.string.calorieBurn,R.string.exerciseTime)
이렇게 간단한 설명을 달아 보았습니다. 개발자 페이지를 잘 보면 상세한 정보를 보실 수 있을 듯합니다만, 속성(?)으로 차트 그리기가 필요하다면, 이 정도의 정보만으로도 멋있는 line chart을 그려 볼 수 있습니다.
4. 실행 예제
chart 예제
이렇게 그려지는 chart 을 보실 수 있습니다. 실행되는 앱의 전체 화면은 고객 보호를 위해서 이 부분만 참조하도록 하겠습니다.
#스하리1000명프로젝트,
In Korea verloren? Auch wenn Sie kein Koreanisch sprechen, hilft Ihnen diese App dabei, sich problemlos fortzubewegen.
Sprechen Sie einfach Ihre Sprache – es übersetzt, sucht und zeigt Ergebnisse in Ihrer Sprache an.
Ideal für Reisende! Unterstützt mehr als 10 Sprachen, darunter Englisch, Japanisch, Chinesisch, Vietnamesisch und mehr.
Probieren Sie es jetzt aus!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127
#스하리1000명프로젝트,
A veces es difícil hablar con trabajadores extranjeros, ¿verdad?
¡Hice una aplicación sencilla que ayuda! Escribes en tu idioma y los demás lo ven en el suyo.
Se traduce automáticamente según la configuración.
Súper útil para chatear fácilmente. ¡Echa un vistazo cuando tengas la oportunidad!
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416
• 이 기사는 드로잉, 폰트 및 문자열을 포함하여 컴포즈 멀티플랫폼의 리소스 사용에 대한 자세한 지침을 제공한다. 저자는 컴포즈 멀티플랫폼 1.6.0-beta01에서 소개한 변화와 새로운 자원 시스템으로의 마이그레이션 방법에 대해 설명한다.
• 드로잉에 액세스하려면 공통 메인에 구성 리소스 디렉토리를 만들고 드로잉을 그 안의 드로잉 폴더에 가져와야 합니다. 그런 다음 Res 클래스를 사용하여 안드로이드의 R 클래스와 유사하게 추첨 가능한 액세스를 할 수 있습니다.
• 폰트의 경우, 컴포즈 리소스에서 폰트 디렉토리를 만들고 폰트를 복사하십시오. 그런 다음 Res 클래스를 사용하여 글꼴에 액세스할 수도 있습니다.
• 문자열에 대해서는 ComposeResources에 값 디렉토리를 만들고 문자열이 포함된 strings.xml 파일을 추가한다. Res 클래스를 통해 문자열에 액세스할 수 있으며 새로운 리소스 시스템은 값-es 및 값-ar와 같은 폴더를 생성하여 다양한 언어를 지원합니다.
• KMP(Kotlin Multiplatform)는 기존 네이티브 프로젝트를 대체하는 것이 아니라 기존 네이티브 프로젝트와 원활하게 통합하여 크로스 플랫폼 개발에 독특한 접근 방식을 제공합니다. 이를 통해 개발자들은 안드로이드에서 공유 코틀린 모듈로 코드를 점진적으로 마이그레이션할 수 있으며, 이 모듈은 원래 스위프트 구현을 대체하여 iOS 애플리케이션에 통합될 수 있다.
• 다른 크로스 플랫폼 프레임워크와 달리 KMP는 애플리케이션을 완전히 다시 쓸 필요가 없으며 개발 단계에서도 통합할 수 있어 플랫폼 간 코드 공유에 유연성을 제공한다.
• KMP는 네이티브 API 및 SDK에 대한 완전한 액세스를 유지하여 래퍼 또는 브리지가 필요하지 않으며 네이티브 성능 및 사용자 경험을 보장합니다.
• KMP는 코드베이스의 상당 부분을 공유함으로써 개발 및 유지보수 비용을 절감하여 더 빠른 기능 전달과 단순화된 버그 수정을 가능하게 한다.
• 마이그레이션 프로세스는 멀티플랫폼 모듈을 설정하고, 선택된 코드를 안드로이드에서 공유 모듈로 이동하고, iOS 프로젝트에 통합하는 것을 포함하며, 기능을 병렬로 마이그레이션할 수 있는 옵션이 있다.
• KMP는 새로운 프로그래밍 언어의 도입을 피하고 네이티브 성능을 유지하며 네이티브 API 및 SDK에 대한 액세스를 유지함으로써 기술적 위험을 최소화한다.
• 안드로이드와 iOS 팀 간의 지식 격차와 같은 잠재적 위험을 완화하기 위해 점진적인 지식 교환 및 협력을 촉진하여 KMP의 성공적인 채택을 보장할 수 있다.
#billcorea #운동동아리관리앱
🏸 Schneedle, ¡una aplicación imprescindible para los clubes de bádminton!
👉 Match Play: registra puntuaciones y encuentra oponentes 🎉
¡Perfecto para cualquier lugar, solo, con amigos o en un club! 🤝
Si te gusta el bádminton, definitivamente pruébalo.
Ir a la aplicación 👉 https://play.google.com/store/apps/details?id=com.billcorea.matchplay