Facebook
From Adam, 2 Months ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 162
  1. class MainActivity : ComponentActivity() {
  2.     override fun onCreate(savedInstanceState: Bundle?) {
  3.         super.onCreate(savedInstanceState)
  4.         setContent {
  5.             BallonsTheme {
  6.                 var xState by remember { mutableStateOf(0f) }
  7.                 val xOffset = animateFloatAsState(
  8.                     targetValue = xState,
  9.                     animationSpec = tween(durationMillis = 4000, easing = LinearEasing)
  10.                 )
  11.                 FlyingBaloon(
  12.                     modifier = Modifier.fillMaxSize(),
  13.                     xOffset = xOffset.value,
  14.                     getYOffset = { x -> (sin(x)) }
  15.                 ) {
  16.                     Ballon()
  17.                 }
  18.  
  19.                 LaunchedEffect(Unit) {
  20.                     launch(context = Dispatchers.IO) {
  21.                         while (true) {
  22.                             delay(16)
  23.                             xState += 1
  24.                         }
  25.                     }
  26.                 }
  27.             }
  28.  
  29.         }
  30.     }
  31. }
  32.  
  33.  
  34. @Composable
  35. fun Ballon() {
  36.     Image(
  37.         painter = painterResource(id = R.drawable.ballon),
  38.         contentDescription = null,
  39.         modifier = Modifier
  40.             .rotate(90f)
  41.             .size(75.dp),
  42.         colorFilter = ColorFilter.tint(Color.Blue)
  43.     )
  44. }
  45.  
  46. @Composable
  47. fun FlyingBaloon(
  48.     modifier: Modifier,
  49.     xOffset: Float,
  50.     getYOffset: (Float) -> Float,
  51.     item: @Composable () -> Unit
  52. ) {
  53.     Box(modifier) {
  54.         Box(
  55.             Modifier
  56.                 .offset(
  57.                     x = xOffset.dp,
  58.                     y = getYOffset(xOffset).dp
  59.                 )
  60.                 .align(Alignment.CenterStart)
  61.         ) {
  62.             item()
  63.         }
  64.     }
  65. }