목록전체 글 (140)
시배's Android
Mavericks 라이브러리를 사용하여 MVI 아키텍처의 안드로이드 앱 개발 시, MavericksState의 UiState 초기값을 동적으로 어떻게 설정하는지에 대해 알아보려고 합니다. data class TestUiState( val test: Test ) : MavericksState data class Test( val abc: String = "" ) 간단하게 UI에서 TestUiState를 구독하여 Test 데이터 클래스의 초기값을 동적으로 설정하고자 합니다. data class TestUiState( val test: Test ) : MavericksState { constructor(args: Bundle) : this( test = if (Build.VERSION.SDK_INT >= Bu..
모든 소프트웨어 제품의 설계에는 두 가지 측면이 존재한다. 하나는 기능 측면의 설계이고, 다른 하나는 구조 측면의 설계다. 객체지향 접근방법은 자주 변경되지 않는 안정적인 객체 구조를 바탕으로 시스템 기능을 객체 간의 책임으로 분배한다. 구조는 사용자나 이해관계자들이 도메인에 관해 생각하는 개념과 개념들 간의 관계로 표현한다. 기능은 사용자의 목표를 만족시키기 위해 책임을 수행하는 시스템의 행위로 표현한다. 도메인 모델의 핵심은 사용자가 도메인을 바라보는 관점을 반영해 소프트웨어를 설계하고 구현하는 것이다. 사용자 모델에 포함된 개념과 규칙은 비교적 변경될 확률이 적기 때문에 사용자 모델을 기반으로 설계와 코드를 만들면 변경에 쉽게 대처할 수 있을 가능성이 커진다. 유스케이스는 시스템의 이해관계자들 간의..
객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계다. 객체지향 세계는 자율적인 객체들의 공동체라는 점을 명시하라. 객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다. 자율적인 책임의 특징은 객체가 어떻게 해야 하는가가 아니라 무엇을 해야 하는가를 설명한다는 것이다. 메시지의 개념은 책임의 개념과 연결된다. 객체가 수신할 수 있는 메시지와 메시지를 처리하기 위해 선택할 수 있는 방법이라는 두 가지 개념이 존재한다. 메시지를 처리하기 위해 내부적으로 선택하는 방법을 메서드라고 한다. 다형성이란 서로 다른 유형의 객체가 동일한 메시지에 대해 서로 다르게 반응하는 것을 의미한다. 서로 다른 타입에 속하는 객체들이 동일한 메시지를 수신할 경우 서로 다..
요청에 대해 적절한 방식으로 응답하는 데 필요한 지식과 행동 방식을 가지고 있기 때문이다. 요청과 응답은 협력에 참여하는 객체가 수행할 책임을 정의한다. 객체지향 개발에서 가장 중요한 능력은 책임을 능숙하게 소프트웨어 객체에 할당하는 것이다. 객체의 책임은 객체가 무엇을 알고 있는가와 무엇을 할 수 있는가로 구성된다. 책임은 객체의 외부에 제공해 줄 수 있는 정보와 외부에 제공해 줄 수 있는 서비스의 목록이다. 책임은 객체의 공용 인터페이스를 구성한다. 두 객체 간의 협력은 메시지를 통해 이뤄진다. 설계를 시작하는 초반에는 어떤 객체가 어떤 책임을 가지고 어떤 방식으로 서로 협력해야 하는지에 대한 개요를 아는 것만으로도 충분하다. 어떤 객체가 수행하는 책임의 집합은 객체가 협력 안에서 수행하는 역할을 암..
6 Jetpack Compose Guidelines to Optimize Your App Performance Since Google announced Jetpack Compose stable 1.0, many companies are getting started to adopt Jetpack Compose into their projects… proandroiddev.com 1. Aim to Write Stable Classes Compose에는 전용 runtime이 있으며, 입력이나 상태가 변경될 때 어떤 Composable 함수를 재구성할지 결정합니다. 런타임 성능을 최적화하기 위해 Compose는 읽고 있는 상태가 변경되었는지 유추할 수 있어야 합니다. 기본적으로 아래 세 가지 stability ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/7whxV/btszHSsvh1J/UBglCSKpi8ukASr3hfDuh0/img.gif)
저희 프로젝트에서 발생한 Android Jetpack Compose AnimatedContent를 사용하면서 발생한 에러와 그에 대한 해결 과정을 공유하려 합니다. 저희 프로젝트는 생활지수와 관련된 정보를 백엔드에서 받아와 이를 롤링되는 이미지로 시각적으로 제공하고 있습니다. fun VerticalRollingContent( modifier : Modifier = Modifier, enterDurationMillis: Int = 300, enterDelayMillis: Int = 500, exitDurationMillis: Int = 300, exitDelayMillis: Int = 0, items: List, content: @Composable (T) -> Unit, ) { var index by r..
Kotlin by 키워드: 위임 프로퍼티와 확장 함수 Kotlin은 강력한 기능 중 하나로 by 키워드를 사용하여 프로퍼티에 위임(delegation)하는 기능을 제공합니다. 이것은 코드의 재사용성과 모듈화를 높이는데 도움이 되며, 다양한 상황에서 유용하게 활용됩니다. 이번 포스팅에서는 by 키워드를 사용하는 두 가지 주요 방법에 대해 알아보겠습니다. 1. 위임 프로퍼티 (Delegated Properties) 위임 프로퍼티를 사용하면, 프로퍼티의 getter와 setter를 다른 객체에 위임할 수 있습니다. 이것은 코드 중복을 줄이고 프로퍼티 동작을 재사용할 수 있는 강력한 방법입니다. by 키워드를 사용하여 다음과 같이 선언할 수 있습니다. class Example { var someProperty:..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/O7POu/btsznDjG7py/Aupm4Jas57cafKBK2gvJM0/img.png)
Understand gestures | Jetpack Compose | Android Developers Understand gestures Stay organized with collections Save and categorize content based on your preferences. There are several terms and concepts that are important to understand when working on gesture handling in an application. This page explains the term developer.android.com 애플리케이션에서 제스처 처리 작업을 할 때 이해해야 할 중요한 용어와 개념이 몇 가지 있습니다. 이 페이지에..