Understand your Mac and iPhone more deeply by tracing the evolution of Mac OS X from prelease to Swift. John Siracusa delivers the details.
You've got two main options:
Kotlin K2 FIR Example. Related Post: https://handstandsam.com/2024/05/30/kotlin-k2-fir-quickstart-guide/ |
@Stable | |
fun Modifier.drawHorizontalFadingEdges( | |
target: Color = Color.White, | |
width: Dp = 10.dp, | |
scrollState: ScrollableState, | |
) = | |
if (!scrollState.canScrollForward && !scrollState.canScrollBackward) this | |
else drawWithCache { | |
val gradientWidth = width.toPx() |
class MainActivity : ComponentActivity() { | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContent { | |
PlaygroundTheme { | |
Surface( | |
modifier = Modifier.fillMaxSize(), | |
color = MaterialTheme.colorScheme.background, | |
) { | |
Box { |
@Composable | |
actual fun PlatformColors(statusBarColor: Color, navBarColor: Color){ | |
val sysUiController = rememberSystemUiController() | |
SideEffect { | |
sysUiController.setSystemBarsColor(color = topColor) | |
sysUiController.setNavigationBarColor(color = bottomColor) | |
} | |
} |
@file:OptIn(ExperimentalComposeUiApi::class) | |
@file:Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER") | |
package net.peanuuutz.compose.desktop | |
import androidx.compose.ui.ExperimentalComposeUiApi | |
import androidx.compose.ui.Modifier | |
import androidx.compose.ui.draw.BuildDrawCacheParams | |
import androidx.compose.ui.draw.CacheDrawScope | |
import androidx.compose.ui.draw.DrawResult |
안녕하세요! 성빈랜드 스터디 공지 드립니다. 성빈랜드 메인 프로젝트 개발을 시작하기 전에 한 달간 코루틴과 안드로이드 프레임워크 내부 딥다이브 스터디를 진행하려고 합니다. 평소 혼자 공부하는 편이지만 워낙 어렵고 좋은 주제인 만큼 함께 공부해 보면 좋을 거 같아 스터디원을 모집하게 됐습니다.
최신 내용은 성빈랜드 공지를 통해 확인해 주세요!
이 스터디의 첫 번째 목적은 엔지니어적 관점에서 역량을 키우기 위함입니다. 또한 내부를 알고 설계하는 것과 내부를 모르고 설계하는 것에서 분명한 차이가 있음을 제가 컴포즈 내부 공부를 통해 느꼈으므로 더 좋은 안드로이드 개발을 위한 목적도 있습니다.
제가 컴포즈 내부를 공부하면서 느낀 점이 혼자서 이 많은 내용을 이해하기가 너무 어렵다는 거였습니다. 초반엔 어느 흐름을 봐야 할 지도 모르겠어서 방황하는 시간이 너무 많았습니다. 이를 극복하기 위해 제가 시도했던 일들은 제가 참고한 컴포즈 내부 레퍼런스의 작성자분과 외국 안드로이드 GDE 이신 분들, StackOverflow, kotlinlang 슬랙, 그리고 구글 컴포즈 팀에 계신 분들에게 여러 번 질문을 통해 6개월간 씨름 끝에 드디어 방향을 잡고 이해할 수 있었고, 성빈랜드에 컴포즈 내부 글을 작성할 수 있었습니다.
package foo.bar | |
import kotlinx.coroutines.delay | |
import kotlinx.coroutines.launch | |
import kotlinx.coroutines.runBlocking | |
import kotlinx.coroutines.* | |
private val testingScope = CoroutineScope(CoroutineName("TestingScope")) |
// Copyright 2022 Google LLC. | |
// SPDX-License-Identifier: Apache-2.0 | |
import androidx.compose.foundation.layout.Box | |
import androidx.compose.runtime.Composable | |
import androidx.compose.runtime.CompositionLocalProvider | |
import androidx.compose.ui.platform.LocalInspectionMode | |
import app.cash.paparazzi.DeviceConfig | |
import app.cash.paparazzi.Paparazzi | |
import com.airbnb.android.showkase.models.Showkase |
The Material Components Library introduced with the 1.2.0-alpha03
the new ShapeableImageView
.
In your layout you can use:
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/image_view"
app:srcCompat="@drawable/..." />
Then in your code apply the ShapeAppearanceModel
to define your custom corners: