분류 전체보기 426

[철권8] 안나 파훼, 딜캐 목록 (시즌2)

안나 파훼, 딜캐 목록안녕하세요 게임하면서 딜캐표도 같이 보려고 적습니다!상 : 상단중 : 중단하 : 하단숫자 : 상대 기술 막았을 때 딜캐 프레임 ** 10딜캐  중 20, -10 ** 11딜캐 중 19, -11 ** 12딜캐 중상중 13, -12 중 15, -12 하 12, 0, -12** 13딜캐 중중 13, +9, -13 중 16, -13 중 20, -13** 14딜캐 중 20, -14 ** 15딜캐 이상 하 16, +5, -15 하특하 16, -16 하 20, -21 하 30, -26 하 24, -26  추가 의견 있으시면 언제든 남겨주세요!도움이 되셨다면 프린스후운 구독 부탁드려요!! 프린스후운프린스후운 입니다! 종합게임의 꿈을 갖고 열심히 하고 있습니다.! 자주 소통하면서 친해져요! 모르..

게임 팁, 정보 2025.04.03

[Compose] 스크롤 안에 (뷰 페이저 + 스크롤) 있는 경우

(Column + verticalScroll) 안에 (HorizontalPager + LazyVerticalGrid)가 들어가면 wrapHeight가 안 된다.앱이 죽는다..에러 : Vertically scrollable component was measured with an infinity maximum height constraints, which is disallowed. 그 경우 .heightIn(max = VIEWPAGER_MAX_HEIGHT.dp) 로 LazyVerticalGrid의 맥스 값을 지정 해주면해당 크기 만큼 설정이 된다. 문제점 : heightIn은 다음 페이지의 크기가 작아지면 wrap하게 된다. (각 페이지의 height)가 다를 수 있다.만약 1페이지의 크기와 2페이지의 크기..

[Compose] Scaffold: 내부 동작 원리와 UI 자동 조정 과정 분석

[Column + Scroll] 이나 lazyColumn 일 경우멀티 윈도우 앱 크기 줄였을 때 스크롤 끊기는 현상이 있었습니다.문제 재현 결론부터 말하자면 Scaffold로 해결 하였습니다. Scaffold란?Scaffold는 앱의 기본 UI 구조를 제공하는 컨테이너 컴포저블입니다.✔ topBar, bottomBar, floatingActionButton, drawerContent 등의 주요 UI 요소를 배치할 수 있도록 지원합니다.✔ contentPadding을 통해 콘텐츠 영역의 크기를 자동 조정하여, UI가 겹치거나 잘리는 문제를 방지합니다.✔ NestedScrollConnection을 활용해 내부 스크롤 이벤트 충돌을 방지하며, 시스템 UI(상태바, 네비게이션바)와의 겹침을 피하기 위해 Modi..

[Compose] 컴포즈 실전 내가 경험한 Tip !

mutableStateOf 사용시 유의할 점@Composable함수 내에서 mutableStateOf를 사용할 때, remember를 사용해야 한다.mutableStateOf 대신 mutableIntStateOf를 사용하는 것이 더 성능이 좋다 (린트 경고)Compose 매개변수 정렬 규칙필수 매개변수 (State 포함)이벤트 핸들러 (onClick, onChange 등)이벤트 핸들러는 “발생할 때”를 의미하기 때문에 현재형을 사용해야 함.modifier: Modifier = Modifier기본값을 가진 선택적 매개변수content: @Composable () -> Unit (Trailing Lambda, 선택적)예외 사항 (Trailing Lambda)Compose에서 onClick: () -> Uni..

[Compose] UI를 구성할 때 요소를 정렬하는 방법

Box, Row, Column, LazyColumn, LazyRow 기본 컨테이너에서 정렬 방법 1. Box- 자식 요소를 원하는 위치에 배치할 수 있는 컨테이너정렬 방법contentAlignment → 전체 자식 정렬Modifier.align() → 각 자식 개별 정렬Box( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center // 모든 자식 요소 기본 정렬) { Text( text = "이 텍스트는 오른쪽 상단!", modifier = Modifier.align(Alignment.TopEnd) // 개별 정렬 )}contentAlignment = Alignment.Center → ..

[Compose] LiveData vs StateFlow: Compose에서 어떤 것을 사용할까?

1. LiveData를 Compose에서 사용하는 방법LiveData는 Android의 UI 상태를 관리하는 기존 방식입니다.Compose에서는 observeAsState()를 사용하여 LiveData를 Compose 상태(State)로 변환할 수 있습니다.@Composablefun LiveDataExample(viewModel: MyViewModel) { val liveDataValue: String? by viewModel.myLiveData.observeAsState() Text(text = liveDataValue ?: "No data available")}📌 observeAsState()란?✔ LiveData를 State로 변환합니다.✔ LiveData의 값이 변경될 때마다 자동으로..

[Compose] Compose에서 key의 역할과 사용법

Compose에서 key의 역할과 사용법Compose에서 key는 컴포저블의 상태 유지 및 무효화 관리를 위한 중요한 개념입니다. 이를 올바르게 사용하면 효율적인 상태 관리와 UI 업데이트를 구현할 수 있습니다.  key의 역할과 사용하는 이유📌 key의 역할Compose의 재구성(Recomposition) 로직을 제어합니다.특정 값이 변경될 때 기존 상태를 무효화하고 새로운 상태를 초기화할 수 있습니다.📌 key가 상태에 미치는 영향 (상태 소멸 조건)key 값이 변경되면 기존 상태가 무효화되고 새로운 상태가 생성됩니다.새로운 객체가 생성되므로, 기존에 저장된 상태는 유지되지 않습니다.@Composablefun CounterWithKey(userId: String) { var count by ..

[Compose] Paging3 클린 아키텍처 적용하다 의문점

Paging3 클린 아키텍처 적용Paging3를 클린 아키텍처에 적용하다가 의문점이 생겼다.Domain 레이어에 있는 androidx.paging이 안드로이드 종속성이 있지 않나?사용하면 안되지 않나?그래서 찾아 보았다. 클린 아키텍처에서 Paging 3의 역할각 계층의 역할 Paging 3의 안드로이드 종속성 정리Paging 3은 여러 개의 모듈로 나뉘어 있으며, 각 모듈이 제공하는 기능을 이해해야 한다.📌  1. androidx.paging:paging-common (안드로이드 종속성 없음 ✅)implementation "androidx.paging:paging-common:3.x.x"✔ 멀티플랫폼(Kotlin Multiplatform)에서도 사용 가능 ✔ 안드로이드 종속성이 없으며, Domain ..

[Compose] TextField의 여백 문제와 해결 방법

TextField의 여백 문제와 해결 방법Jetpack Compose에서 TextField를 사용할 때, 텍스트가 위쪽으로 쏠리거나 하단에 불필요한 여백이 생기는 경우가 있다. 특히 여러 줄 입력 (multiLine)을 허용할 때 이 현상이 두드러진다. TextField에서 여백이 생기는 이유1. TextField의 내부 패딩기본 TextField는 내부적으로 BasicTextField를 래핑하고 있으며, 기본 패딩이 포함되어 있다. 이 때문에 입력 텍스트가 위쪽으로 쏠리거나, 하단에 여백이 남을 수 있다.2. lineHeight을 조정해도 해결되지 않음보통 TextStyle에서 lineHeight을 조정하면 텍스트 정렬이 맞을 거라고 생각하지만, Compose에서는 Baseline기준으로 텍스트를 정렬..

[Compose] Compose에서 =와 by의 차이 (kotilin 동일)

= vs by의 차이는?Jetpack Compose에서 =와 by는 상태(state)를 사용하는 방식과 데이터 변경 추적 방식에서 차이가 발생합니다. 이는 Compose에서 상태를 올바르게 관리하고, UI를 효율적으로 갱신하는 데 중요한 개념입니다. =를 사용하는 경우=를 사용하면 State 객체 자체를 직접 저장합니다.var countState: State = remember { mutableStateOf(0) }동작 방식:countState는 State 타입이므로, 값을 직접 사용하려면 .value를 통해 접근해야 합니다.즉, UI에서 사용할 때 countState.value를 명시적으로 참조해야 합니다.예제)Text(text = "Count: ${countState.value}")Button(onC..