Repository navigation
[Add] :systembars — 화면 배경에 맞춰 상태바/내비바 아이콘 명암·색을 바꾸는 모듈 - #9
Merged
Merged
Conversation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…t, Dialog 헬퍼 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- 부모 draw 는 자식만 다시 그려질 때 재실행되지 않아 스크롤 중 샘플이 거의 안 돌았음 → OnDrawListener 로 프레임 감지 - 자기 재그리기가 일으킨 프레임은 무시(무한 루프 방지) - 상태바/내비바를 한 번의 콘텐츠 패스로 읽음, 캔버스 교체 후 size 를 쓰던 축척 버그 수정 - Trace 섹션 SystemBars.sample / SystemBars.apply 추가 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
config 가 바뀌면 컨트롤러가 새로 만들어지고 이전 것이 dispose 되어, 이미 붙어 있던 노드의 apply 가 무시되던 문제 수정. 회귀 계측 테스트 추가. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
프레임 지연 측정에서는 이득도 손해도 확인되지 않았다(S8 release, 노이즈 큼). 바 칠하기 기능이 '이기는 노드만 칠한다'를 필요로 해서 isWinner/변경 리스너를 유지한다. 데모에 STACKED 모드, 회귀 계측 테스트 추가. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…이하 스크림 보정 - Modifier.systemBars(statusPaint, navigationPaint): 노드가 바 영역을 직접 칠한다(윈도우 색 속성 미사용) - 스택에서 이기는 노드만 칠하고, Solid 는 Auto 와 쓰면 샘플링 없이 아이콘 판정 - API 29 미만 3버튼 내비바는 window.navigationBarColor 를 스크림으로 사용 - JVM/계측 테스트, 데모 '바 칠하기' 모드, README/ARCHITECTURE 갱신 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…E 갱신 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
요약
:systembars모듈 추가. edge-to-edge 앱에서 상태바 / 내비게이션바 아이콘 명암을 화면 배경에 맞춰 바꾸고, 필요하면 바 영역을 직접 칠한다. 배경색을 직접 지정하거나 실제로 그려진 픽셀을 샘플링해서 자동으로 고른다.Modifier.systemBars(status, navigation, statusPaint, navigationPaint),SystemBarsHost,SystemBarsDialog,SystemBarsConfig/ScrimModelBarContent:Auto·AutoWindow(PixelCopy) ·Background(color)·Light·Dark·InheritBarPaint:None(기본, 투명) ·Sampled·Solid(color)— 윈도우 색 속성이 아니라 노드가 바 영역에 칠한다Inherit는 바마다 아래로 내려간다window.navigationBarColor를 스크림으로 사용systembars/ARCHITECTURE.md, 사용 문서systembars/README.md, 공개 API KDoc 한/영 병기 + Dokka:app에 SystemBars 데모 탭 (스크롤 / 비교 / 지정색 / Dialog / SurfaceView / 겹침 / 바 칠하기)샘플링 방식
평소엔
drawContent()만 한다. 샘플 시점에만 노드 캔버스를 16×160 소프트웨어 비트맵으로 잠깐 바꿔 한 번 더 그리고 바 아래 행만 읽는다(GPU read-back 없음). 결과는 ComposeState가 아니라 윈도우 컨트롤러에 직접 적용해서 리컴포지션을 일으키지 않는다.테스트
restartable skippable, 파라미터stable, 계측 테스트로 샘플링 중 컴포지션 1회 확인성능 (S8 API 28, 스크롤, 4라운드 중앙값)
샘플 1회는 debug 약 4ms 지만 서브트리 재기록 비용이 더 커서 스크롤 중 프레임 꼬리가 늘어난다. 기본 간격은 300ms. jank 비율은 라운드 편차가 커서 지표로 쓰지 않았다.
PixelCopy를Auto기본으로 쓰는 안은 측정했지만 이득이 없어 채택하지 않았다(네이티브 대체도 병목이 픽셀 연산이 아니라 해당 없음). LeakCanary 로 Activity 30회 파괴 시 retained 객체 없음.바 칠하기(
BarPaint) 비용 (S8 release, 간격 300ms, 3라운드 중앙값)Auto, 칠하기 없음Auto+SampledAuto+SolidSolid는Auto와 같이 쓰면 샘플링을 건너뛰고 사각형 하나만 그려서 modifier 없음과 비슷하다.Sampled는Auto샘플링 비용에 사각형 한 번이 더해지는 정도(p99 차이는 라운드 간 겹쳐 노이즈일 수 있음). 설정당 3회라 p99 는 흔들리고, 칠하기 사각형 자체의 순수 비용은 이 해상도에서는 확인되지 않았다.알려진 한계 / 미확인
:systembars-navigation어댑터 영역io.github.sonms:systembars:0.0.1)은 아직 실제 업로드로 검증하지 않음참고
Auto노드는 샘플링을 건너뛴다(별도 커밋). 프레임 지연에서는 이득이 측정되지 않았지만 바 칠하기의 "이기는 노드만 칠한다"에 필요해서 유지했다.🤖 Generated with Claude Code