/* * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.wallpaper.picker.preview.ui.viewmodel import android.view.View import androidx.core.view.isVisible import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle import com.android.wallpaper.picker.customization.ui.util.ViewAlphaAnimator.animateToAlpha import kotlinx.coroutines.launch object SmallPreviewAlphaAnimationBinder { fun bind( lockPreviewShades: List?, homePreviewShades: List?, viewModel: WallpaperPreviewViewModel, lifecycleOwner: LifecycleOwner, ) { lifecycleOwner.lifecycleScope.launch { lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { launch { viewModel.smallLockPreviewAlpha.collect { previewAlpha -> if (previewAlpha == null) { lockPreviewShades?.forEach { it.isVisible = false } } else { lockPreviewShades?.forEach { it.isVisible = true } val shadeAlpha = 1 - previewAlpha.alpha if (previewAlpha.shouldAnimate) { lockPreviewShades?.forEach { it.animateToAlpha(shadeAlpha) } } else { lockPreviewShades?.forEach { it.alpha = shadeAlpha } } } } } launch { viewModel.smallHomePreviewAlpha.collect { previewAlpha -> if (previewAlpha == null) { homePreviewShades?.forEach { it.isVisible = false } } else { homePreviewShades?.forEach { it.isVisible = true } val shadeAlpha = 1 - previewAlpha.alpha if (previewAlpha.shouldAnimate) { homePreviewShades?.forEach { it.animateToAlpha(shadeAlpha) } } else { homePreviewShades?.forEach { it.alpha = shadeAlpha } } } } } } } } }