일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바 다형성
- 클래스
- 서비스 vs 쓰레드
- android ar 개발
- android retrofit login
- jvm이란
- 객체
- 큐 자바 코드
- rxjava cold observable
- 안드로이드 레트로핏 crud
- 스택 자바 코드
- ANR이란
- 서비스 쓰레드 차이
- 멤버변수
- 안드로이드 유닛 테스트
- rxjava hot observable
- rxjava disposable
- 안드로이드 라이선스 종류
- 안드로이드 유닛테스트란
- 스택 큐 차이
- 안드로이드 라이선스
- 2022 플러터 설치
- 2022 플러터 안드로이드 스튜디오
- ar vr 차이
- 안드로이드 레트로핏 사용법
- 플러터 설치 2022
- 안드로이드 os 구조
- Rxjava Observable
- 안드로이드 유닛 테스트 예시
- jvm 작동 원리
- Today
- Total
목록Android/Compose (28)
나만을 위한 블로그
Compose에서 말하는 상태는 아래와 같다. https://developer.android.com/develop/ui/compose/state?hl=ko 상태 및 Jetpack Compose | Android Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. 상태 및 Jetpack Compose 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱의 상태는 시간이 지남에 따라 developer.android.com 앱의 상태는 시간이 지남에 따라 변할 수 있는 값이다. Room DB부터 클래스 변수까지 모든 항목이 포함된다. 모든 안드로이드 앱에선 유저에게 상태가 표시된다. 아래는 상태의 몇 가지 예다. - 네트워크 연결을 설정할..
Compose로 앱을 만들다가 하단 탭이 필요한 시점이 와서 구현하고, 어떻게 구현했는지 그 방법을 정리해 둔다. 먼저 sealed class로 앱에서 표시할 화면을 정의해 둔다. 꼭 sealed class가 아니라도 상관없다. sealed class AppScreen( val route: String, @StringRes val resourceId: Int, ) { object Home: AppScreen("home", R.string.home) object Favorite: AppScreen("favorite", R.string.favorite) object MyPage: AppScreen("mypage", R.string.my_page) } 이 클래스는 본인이 어떤 화면들을 만들 건지에 따라 구현이..
Compose로 앱을 만들던 중 CircularProgressIndicator를 써서 로딩 뷰를 구현하고 실행했더니 아래 에러가 발생했다. android java.lang.NoSuchMethodError: No virtual method at(Ljava/lang/Object;I)Landroidx/compose/animation/core/KeyframesSpec$KeyframeEntity; in class Landroidx/compose/animation/core/KeyframesSpec$KeyframesSpecConfig; or its super classes (declaration of 'androidx.compose.animation.core.KeyframesSpec$KeyframesSpecConfi..
틈틈이 Compose 공부용으로 뉴스 api를 사용한 뉴스 조회 앱을 만들고 있는데, 뷰모델에 함수를 생성한 후에 액티비티에서 호출하면 ApiResult.Success가 호출되지 않는 현상이 발생했다. 아래는 오류가 발생하던 메인 액티비티의 구현으로, 아직 LazyColumn을 사용하기 전의 코드다. @AndroidEntryPoint class MainActivity : ComponentActivity() { private val newsViewModel: NewsViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { ComposeNe..
먼저 앱 gradle에 라이브러리 의존성을 추가한다. implementation(platform("androidx.compose:compose-bom:2023.06.01")) 그리고 적당한 이미지를 하나 준비하고 drawable 폴더에 넣어둔다. 아래는 액티비티의 전체 코드다. import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.f..
리스트에 여러 아이템을 불러올 때 대개 로딩 시간이 걸리기 마련이다. 이 때 흰 화면만 덩그러니 띄워두면 유저는 데이터를 불러오는 중인지 에러가 난 건지 모를 수밖에 없기 때문에 로띠 애니메이션을 돌리는 등의 데이터를 불러오고 있다는 애니메이션을 표시한다. 흔히 스켈레톤 뷰라고도 하는 기법도 유저에게 로딩 중임을 표시하는 방법인데, 이 포스팅에선 별도 라이브러리 없이 순수 컴포즈만으로 이를 구현하는 방법을 포스팅한다. 먼저 파일을 하나 만든다. import androidx.compose.animation.core.animateFloat import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.cor..
여러 아이템들이 표시되는 화면의 맨 위에서 계속 스크롤을 시도하면 위에서 재활용 아이콘이 나오고, 이 때 손을 떼면 화면에 표시되는 데이터들을 새로고침하는 기능이 있다. 안드로이드에선 이를 Swipe Refresh라고 부른다. 이 포스팅에선 컴포즈에서 이걸 구현한 예제 코드를 확인한다. 먼저 이 예제에서 사용한 라이브러리는 현재 deprecated 되었음에 주의한다. 그래서 실제로 사용한다면 이 라이브러리 대신 다른 걸 사용하는 게 맘 편할 것이다. 여기선 예제 포스팅이기 때문에 그냥 사용했다. implementation("com.google.accompanist:accompanist-swiperefresh:0.27.0") 그리고 뷰모델을 만든다. import androidx.lifecycle.ViewM..
먼저 뷰모델 의존성을 추가한다. implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1") 그리고 뷰모델을 만든다. 별다른 API 통신 없이 뷰모델 사용법만 보여주기 위해 간단하게 작성했다. import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.Color import androidx.lifecycle.ViewModel class MyViewModel: ViewModel() { var backgroun..
사용자에게 선택할 수 있는 요소들을 제공할 때 가장 자주 사용되는 것들이 제목의 3가지 컴포넌트다. 이것들을 컴포즈에선 어떻게 사용할 수 있는지 확인해 본다. 먼저 data class를 만든다. data class ToggleComponentInfo( val isChecked: Boolean, val text: String ) 액티비티의 전체 코드는 아래와 같다. import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.clickable import androidx.compose.foundation.l..
Compose로 앱을 만들 때 NavigationDrawer를 구현하는 방법에 대해 포스팅한다. 먼저 NavigationDrawer가 열렸을 때 표시할 제목, 아이콘들을 갖고 있을 data class를 만든다. import androidx.compose.ui.graphics.vector.ImageVector data class NavigationItem( val title: String, val selectedIcon: ImageVector, val unselectedIcon: ImageVector, val badgeCount: Int? = null ) 그리고 액티비티를 구성한다. import android.os.Bundle import androidx.activity.ComponentActivity i..