9afce6f6创建于 2025年5月7日历史提交
/*
 * Copyright (c) 2024 Huawei Device Co., Ltd.
 * 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.
 */

/**
 * 动画相关参数类
 */
@Observed
export class AnimationInfo {
  isExpand: boolean; // Mini条是否展开标志位
  isAnimating: boolean; // 是否正在动画标志位
  topUnsafeHeight: number; // 顶部非安全区域高度(状态栏高度)
  bottomUnsafeHeight: number; // 底部非安全区域高度(导航栏高度)
  detailsPageImgPositionY: number; // 全屏播放页歌曲封面Y轴位置
  miniImgPositionY: number; // Mini条歌曲封面Y轴位置
  screenHeight: number; // 屏幕高度(包含顶部和底部非安全区域高度)
  screenWidth: number; // 屏幕宽度
  miniDistanceToTop: number; // Mini条距离屏幕顶部的高度(包含顶部状态栏高度)
  miniDistanceToBottom: number; // Mini条距离屏幕底部的高度(Mini条高度+TabBar高度+底部非安全区域高度(导航栏高度))
  miniImgOpacity: number; // Mini条实际歌曲封面的透明度
  miniImgAnimateOpacity: number; // 用于动画的Mini条歌曲封面的透明度
  miniImgToDetailsPageImgDistance: number; // Mini条歌曲封面Y轴位置到全屏播放页歌曲封面Y轴位置的距离
  miniImgOffsetY: number; // Mini条歌曲封面一镜到底动画过程中偏移的距离
  miniImgOffsetSize: number; // Mini条歌曲封面动画过程中尺寸变化量
  miniPlayerOpacity: number; // Mini条透明度
  miniImgOffsetX: number; // Mini条歌曲封面动画过程中X轴偏移量
  detailsPageOffsetY: number; // 全屏播放页Y轴偏移距离
  miniChangeHeight: number; // Mini条动画过程中高度拉伸大小
  detailsPageTopOpacity: number; // 全屏播放页收起按钮父容器Row透明度控制
  detailsPagePositionY: number; // 动画过程中全屏播放页Y轴位置
  detailsPageOpacity: number; // 全屏播放页透明度

  constructor(
    isExpand: boolean = false,
    isAnimating: boolean = false,
    topUnsafeHeight: number = 0,
    bottomUnsafeHeight: number = 0,
    detailsPageImgPositionY: number = 0,
    miniImgPositionY: number = 0,
    screenHeight: number = 0,
    screenWidth: number = 0,
    miniDistanceToTop: number = 0,
    miniDistanceToBottom: number = 0,
    miniImgOpacity: number = 1,
    miniImgAnimateOpacity: number = 0,
    miniImgToDetailsPageImgDistance: number = 0,
    miniImgOffsetY: number = 0,
    miniImgOffsetSize: number = 0,
    miniPlayerOpacity: number = 1,
    miniImgOffsetX: number = 0,
    detailsPageOffsetY: number = 0,
    miniChangeHeight: number = 0,
    detailsPageTopOpacity: number = 1,
    detailsPagePositionY: number = 0,
    detailsPageOpacity: number = 0
  ) {
    this.isExpand = isExpand;
    this.isAnimating = isAnimating;
    this.topUnsafeHeight = topUnsafeHeight;
    this.bottomUnsafeHeight = bottomUnsafeHeight;
    this.detailsPageImgPositionY = detailsPageImgPositionY;
    this.miniImgPositionY = miniImgPositionY;
    this.screenHeight = screenHeight;
    this.screenWidth = screenWidth;
    this.miniDistanceToTop = miniDistanceToTop;
    this.miniDistanceToBottom = miniDistanceToBottom;
    this.miniImgOpacity = miniImgOpacity;
    this.miniImgAnimateOpacity = miniImgAnimateOpacity;
    this.miniImgToDetailsPageImgDistance = miniImgToDetailsPageImgDistance;
    this.miniImgOffsetY = miniImgOffsetY;
    this.miniImgOffsetSize = miniImgOffsetSize;
    this.miniPlayerOpacity = miniPlayerOpacity;
    this.miniImgOffsetX = miniImgOffsetX;
    this.detailsPageOffsetY = detailsPageOffsetY;
    this.miniChangeHeight = miniChangeHeight;
    this.detailsPageTopOpacity = detailsPageTopOpacity;
    this.detailsPagePositionY = detailsPagePositionY;
    this.detailsPageOpacity = detailsPageOpacity;
  }
}