일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 자바 다형성
- 클래스
- 안드로이드 레트로핏 crud
- ar vr 차이
- 2022 플러터 안드로이드 스튜디오
- 스택 자바 코드
- 객체
- 안드로이드 os 구조
- 스택 큐 차이
- Rxjava Observable
- 플러터 설치 2022
- jvm이란
- 큐 자바 코드
- 서비스 vs 쓰레드
- 안드로이드 레트로핏 사용법
- android retrofit login
- 안드로이드 라이선스 종류
- 안드로이드 유닛 테스트 예시
- rxjava disposable
- android ar 개발
- 서비스 쓰레드 차이
- ANR이란
- 멤버변수
- 안드로이드 유닛 테스트
- 안드로이드 유닛테스트란
- 안드로이드 라이선스
- rxjava cold observable
- rxjava hot observable
- 2022 플러터 설치
- jvm 작동 원리
- Today
- Total
목록Android/Compose (28)
나만을 위한 블로그
Compose로 앱을 만들 때도 당연히 브로드캐스트 리시버를 사용해야 하는 경우가 발생할 수 있다. 이 포스팅에선 기기에서 비행기 모드를 온오프 했을 때 이를 감지하는 것, 버튼을 누르면 내가 정의한 인텐트를 브로드캐스트 리시버를 통해 받는 예제와 관련 코드 분석을 진행한다. 그러나 브로드캐스트 리시버가 무엇인지 잘 모를 수 있으니 먼저 브로드캐스트 리시버가 무엇인지 확인하고 넘어간다. 브로드캐스트 리시버(Broadcast Receiver)는 어떻게 작동할까? 라디오를 생각해 보자. 라디오는 여러 주파수에서 방송하는 많은 채널들이 있다. 난 주파수를 바꿔가면서 원하는 채널을 들을 수 있다. 이와 유사하게 브로드캐스트 리시버는 안드로이드 시스템에서 발생하는 여러 이벤트를 듣고 반응한다. 배터리 부족, 비행..
Compose에서 이미지를 가져와 리스트 형태로 표시하는 예제를 다룬 영상이 있어 공부한 후 포스팅한다. 링크는 아래 남긴다. https://www.youtube.com/watch?v=uHX5NB6wHao&t=102s 이미지 처리 라이브러리는 Coil을 사용한다. 오늘 날짜인 23.08.13 기준 최신 버전은 아래와 같으니 참고한다. implementation("io.coil-kt:coil-compose:2.4.0") 그리고 에뮬레이터로 안드로이드 12, 13 기기에서 어떻게 보이는지 확인했기 때문에 무료 이미지 몇 장을 준비해서 에뮬레이터에 옮겨둔 다음 진행했다. 에뮬레이터에 사진 파일을 넣는 방법은 아래 순서대로 따라하면 된다. 이 과정은 당연히 하나의 에뮬레이터에만 적용되며 한 에뮬레이터에 옮겼다고..
※ 이 포스팅의 예제 코드는 안드로이드 스튜디오 플라밍고 버전에서 작성했기 때문에 구버전 안드로이드 스튜디오를 쓰는 경우 컴파일 에러가 발생하는 import문이 있을 수 있다. Compose를 사용하지 않는다면 인텐트와 startActivity()를 써서 다른 액티비티로 이동할 수 있었다. 하지만 Compose에선 startActivity() 대신 네비게이션 라이브러리를 써서 화면 이동을 구현한다. 코드를 보기 전에 왜 Compose에선 이딴이런 식으로 화면 이동을 구현해야 하는 것인가? 이 글을 보는 사람이라면 Compose가 선언형 방식으로 UI를 구성한다는 건 알고 있을 것이다. 이 특징 때문에 네비게이션 라이브러리를 사용하는 것이다. 안드로이드의 전통적인 화면 전환 방법인 startActivity..
리사이클러뷰에서 아이템에 체크박스를 넣어 사용했듯 Compose에서도 같은 경우가 당연히 발생할 수 있다. 그러나 Compose에는 리사이클러뷰 대신 LazyColumn이 존재하고, 어댑터가 따로 존재하지 않는다. 이 상황에서 어떻게 체크박스를 만들고 체크 상태를 유지하게 할 수 있을까? 코드로는 아래와 같이 작성하면 스크롤하더라도 체크 상태가 유지되는 체크박스를 만들 수 있다. @Composable fun TodoCard( modifier: Modifier = Modifier, title: String, content: String ) { var checked by rememberSaveable { mutableStateOf(false) } Card(modifier = modifier) { Column..
일반적인 리사이클러뷰에 스티키 헤더와 헤더별로 그룹화된 아이템들이 들어가도록 구현하려면 둘 이상의 뷰홀더를 구현해야 하고, 복잡한 코드를 작성해야 하는 불편함과 공수가 걸린다. 그러나 Compose에선 이 작업을 아주 많이 간소화시켜서 구현할 수 있다. 클릭 이벤트를 적용하는 것도 쉽다. 말은 필요없고 코드부터 본다. 먼저 res/values 패키지 안에 적당히 이름 붙인 values resource file을 만들고 아래 코드를 붙여넣는다. 서버에서 받아오는 대신 하드코딩한 문자열을 사용할 것이다. First Item First Item1 First Item2 Second Item Second Item2 Second Item3 Second Item4 Third Fourth Fifth Fifth Item..
먼저 Slot의 사전적 정의는 아래와 같다. (뭘 집어넣게 만든 가느다란) 구멍 / 자리, 시간, 틈 / 넣다 쉽게 말해서 뭐 넣을 수 있게 생긴 빈 틈을 슬롯이라고 한다. 이런 정의가 Slot API에서도 비슷한지 확인해 본다. https://developer.android.com/jetpack/compose/layouts/basics?hl=ko#slot-based-layouts Compose 레이아웃 기본사항 | Jetpack Compose | Android Developers Compose 레이아웃 기본사항 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Jetpack Compose를 사용하면 앱의 UI를 훨씬 쉽게 디자인하고 빌드할 수 있습니다. Compose dev..
Compose를 사용하기 전의 XML로 뷰를 짤 경우 상태는 다양한 방법으로 정의한다. boolean 변수에 값을 저장한다거나 객체를 활용한다거나, 또는 다른 소스들을 찾아보면 아주 낮은 확률로 보이는 AtomicBoolean을 쓴다던가 등. 데이터 바인딩을 적극 사용한다면 LiveData 또는 Flow를 사용할 수도 있다. 그러나 Compose에선 boolean, 객체를 활용하는 방식으로 뷰의 상태를 관리하지 않는다. Compose에선 remember라는 API를 사용해 여러 리컴포지션 간에 상태를 관리할 수 있다. 안드로이드 디벨로퍼에선 remember에 대해 아래와 같이 말한다. https://developer.android.com/jetpack/compose/state?hl=ko 상태 및 Jetp..
Compose에도 생명주기란 개념이 존재한다. 이번 포스팅에선 Compose의 생명주기가 어떤 것인지 확인한다. 먼저 공식문서부터 확인한다. https://developer.android.com/jetpack/compose/lifecycle?hl=ko 컴포저블 수명 주기 | Jetpack Compose | Android Developers 컴포저블 수명 주기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 페이지에서는 컴포저블의 수명 주기에 관해 알아보며 Compose에서 컴포저블에 재구성 developer.android.com (중략)...컴포저블의 생명주기는 컴포지션 시작, 0회 이상 재구성, 컴포지션 종료 이벤트로 정의된다 컴포저블은 컴포지션을 시작하고 0회 이상 ..
Compose의 컴포저블 함수는 2종류로 나뉜다. 제목의 Stateful Composable과 Stateless Composable이 그것이다. 단순하게 Stateful과 Stateless를 보면 상태유지와 비상태유지라는 뜻이 각각 있어서, Stateful은 상태를 가졌으면 불리는 이름이고 반대로 상태를 갖고 있지 않으면 Stateless라고 불리는 게 아닐까 생각된다. 둘의 차이는 안드로이드 디벨로퍼보다 코드랩에 좀 더 잘 나와있다. 코드랩 전에 디벨로퍼부터 확인해본다. 위 내용은 생략하고 중간만 가져온 것이기 때문에 전체 문서를 확인해 보는 게 좋다. https://developer.android.com/jetpack/compose/state?hl=ko#stateful-vs-stateless 상태 및..
LazyHorizontalGrid와 LazyRow, LazyColumn을 쓰면 스크롤 가능한 뷰를 만들 수 있다. 그래서 이번 포스팅에선 Lazy 종류 레이아웃들이 왜 나왔는지 알아보기 위해 Column과 Row를 스크롤 가능하게 구현하고, 이렇게 구현 시 발생하는 일들을 확인한다. 먼저 적당히 화면을 만들어준다. @Composable fun ScrollableColumn( modifier: Modifier = Modifier ) { val scrollState = rememberScrollState() Column( modifier = modifier .fillMaxSize() .padding(12.dp) .verticalScroll(scrollState) ) { for (i in 0..100) { T..