4d6f52c8创建于 2025年8月4日历史提交

banner4cj 特性文档

介绍

banner4cj 是一个banner库,常用于广告图片轮播场景。它是一个用仓颉语言编写的适用于鸿蒙系统的三方库。

1 基础信息类

public class BannerBean {
    
    /*
     * 设置颜色
     * 
     * 参数 imageRes - 图片资源
     * 参数 title - 标题
     * 参数 viewType - 类型
     *
     * 返回值 Unit
     */
    public init(imageRes: ?AppResource, title: String, viewType: Int64): Unit
}
public class IndicatorConfig {
    
    /*
     * 设置指示器大小
     * 
     * 参数 indicatorSize - 指示器大小
     */
    public func setIndicatorSize(indicatorSize: Int64):Unit
    
    /*
     * 获取指示器大小
     * 
     * 返回值 Int64 - 指示器大小
     */
    public func getIndicatorSize(): Int64 

    /*
     * 设置颜色
     * 
     * 参数 normalColor - 颜色
     */
    public func setNormalColor(normalColor: Color):Unit
    
    /*
     * 获取颜色
     * 
     * 返回值 Color - 颜色
     */
    public func getNormalColor(): Color
    
    /*
     * 获取选中颜色
     * 
     * 返回值 Color - 选中颜色
     */
    public func getSelectedColor(): Color

    /*
     * 设置选中颜色
     * 
     * 参数 selectedColor - 选中颜色
     */
    public func setSelectedColor(selectedColor: Color): Unit
    
    /*
     * 获取指示器间隔大小
     * 
     * 返回值 Float64 - 间隔大小
     */
    public func getIndicatorSpace(): Float64

    /*
     * 设置指示器间隔大小
     * 
     * 参数 indicatorSpace - 间隔大小
     */
    public func setIndicatorSpace(indicatorSpace: Float64): Unit
    
    /*
     * 获取当前位置
     * 
     * 返回值 Int32 - 当前位置
     */
    public func getCurrentPosition(): Int32

    /*
     * 设置当前位置
     * 
     * 参数 currentPosition - 当前位置
     */
    public func setCurrentPosition(currentPosition: Int32): Unit
    
    /*
     * 获取所有指示器正常宽度
     * 
     * 返回值 Float64 - 正常宽度
     */
    public func getNormalWidth(): Float64

    /*
     * 设置所有指示器正常宽度
     * 
     * 参数 normalWidth - 正常宽度
     */
    public func setNormalWidth(normalWidth: Float64): Unit
    
    /*
     * 获取选中的指示器宽度
     * 
     * 返回值 Float64 - 选中宽度
     */
    public func getSelectedWidth(): Float64

    /*
     * 设置选中的指示器宽度
     * 
     * 参数 normalWidth - 选中宽度
     */
    public func setSelectedWidth(setSelectedWidth: Float64): Unit
    
    /*
     * 获取圆弧大小
     * 
     * 返回值 Float64 - 圆弧大小
     */
    public func getRadius(): Float64
    
    /*
     * 设置圆弧大小
     * 
     * 参数 radius - 圆弧大小
     */
    public func setRadius(radius: Float64): Unit
    
    /*
     * 获取高度
     * 
     * 返回值 Float64 - 高度
     */
    public func getHeight(): Float64

    /*
     * 设置高度
     * 
     * 参数 height - 高度
     */
    public func setHeight(height: Float64): Unit
    
    /*
     * 设置图片资源
     * 
     * 参数 select - 图片资源
     */
    public func setSelectPixelMap(select: ?PixelMap): Unit

    /*
     * 获取图片资源
     * 
     * 返回值 ?PixelMap - 图片资源
     */
    public func getSelectPixelMap(): ?PixelMap
    
    /*
     * 设置正常图片资源
     * 
     * 参数 select - 正常图片资源
     */
    public func setNormalPixelMap(select: ?PixelMap): Unit

    /*
     * 获取正常图片资源
     * 
     * 返回值 ?PixelMap - 正常图片资源
     */
    public func getNormalPixelMap(): ?PixelMap
banner的属性设置 优先BannerOptions设置 如果属性设置不一致 以BannerOptions的设置优先

public class BannerOptions {
    /*
     * Swiper 组件控制器对象,可用于控制组件翻页等行为
     */
    var controller: SwiperController = SwiperController()
    /*
     * 自定播放
     */
    var autoPlay: Bool = false
    /*
     * 当前item停滞时间
     */
    var interval: UInt32 = 3000
    /*
     * 设置可选导航点指示器样式 默认关闭
     */  
    var indicator: SwiperIndicator = SwiperIndicator()
    /*
     * 是否开启循环
     */    
    var loop: Bool = true
    /*
     * 子组件切换动画时长
     */    
    var duration: UInt32 = 400
    /*
     * 是否纵向滑动
     */    
    var vertical: Bool = false
    /*
     * 动画曲率
     */    
    var curve: Curve = Curve.Linear
    /*
     * 是否禁止触摸
     */    
    var disableSwipe: Bool = false
    /*
     * 边界配置 
     */
    var bannerMargin: BannerMargin = BannerMargin(0.0, 0.0)
    
    /*
     * 动画配置 
     */    
    var animatedConfig: ?AnimatedConfig = None
    
    /*
     * 动画效果 
     */ 
    var animatedEnum: AnimatedEnum = AnimatedEnum.NonePage
}
public class BannerMargin {
    /*
     * 配置边界距离-水平是左右的margin,垂直为上下的margin
     * 
     * 参数 left - 水平情况下距离左边的距离 垂直情况下距离上部的距离
     * 参数 right - 水平情况下距离右边的距离 垂直情况下距离下部的距离
     *
     * 返回值 Unit
     */    
    public init(left: Float64, right: Float64): Unit
    
}
public class AnimatedConfig {
    
    /*
     * 动画配置
     * 
     * 参数 AlphaPage_minAlpha - 透明度
     * 参数 DepthPage_minScale - 叠层
     * 参数 MZScaleIn_minScale - 魅族效果 通常配合画廊
     * 参数 RotateDownPage_maxRotate - 圆形旋转翻页 中心点在下方
     * 参数 RotateUpPage_maxRotate - 圆形旋转翻页 中心点在上方
     * 参数 RotateY_maxRotate - 3D旋转翻页 旋转轴Y
     * 参数 ScaleIn_minScale - 缩放进入
     * 参数 ZoomOutPage_minScale - 缩放到底的最小比例
     * 参数 ZoomOutPage_minAlpha - 缩放到底的最小透明度比例
     *
     * 返回值 Unit
     */   
    public init(AlphaPage_minAlpha: UInt32, DepthPage_minScale: UInt32, MZScaleIn_minScale: Int64,
        RotateDownPage_maxRotate: Int64, RotateUpPage_maxRotate: Int64, RotateY_maxRotate: Int64,
        ScaleIn_minScale: Int64, ZoomOutPage_minScale: Int64, ZoomOutPage_minAlpha: Int64): Unit
}

2 组件类

public class Banner {

    /*
     * Banner整体配置
     */
    var bannerOptions: BannerOptions
    
    /*
     * 用户数据
     */
    var data: ObservedArrayList<BannerBean>
    
    /*
     * 轮播效果实现函数
     */
    var bannerContent: (ObservedArrayList<BannerBean>, Int64) -> Unit
    
    /*
     * banner的起始位置
     */
    var currentPosition: UInt32 = 0
        
    /*
     * swiper宽度
     */
    var swiperWidth: Float64 = 0.0
        
    /*
     * swiper高度
     */
    var swiperHeight: Float64 = 0.0
        
    /*
     * 当前页面的信息传递
     */
    var transforms: Array<String> = Array<String>()
    
    /*
     * 是否可以响应触摸
     */
    var canRespTouch: Bool = true
    
    /*
     * 父组件信息传递
     */
    var swiperController: SwiperController = SwiperController()
        
    /*
     * 设置可选导航点指示器样式 默认关闭
     */
    var indicator: SwiperIndicator = SwiperIndicator()

}

3 指示器

四种指示器

@Component
public class CircleIndicator {
    /*
     * 圆形指示器 
     */   
    @Watch[watchIndicatorConfig]
    @Link
    var indicatorConfig: IndicatorConfig
}
@Component
public class RoundLinesIndicator {
    /*
     * RoundLines类型指示器 
     */   
    @Watch[watchIndicatorConfig]
    @Link
    var indicatorConfig: IndicatorConfig
}
@Component
public class PixelMapIndicator {
    /*
     * 图片指示器 
     */   
    @Watch[watchIndicatorConfig]
    @Link
    var indicatorConfig: IndicatorConfig
}
@Component
public class RectFIndicator {
    /*
     * 矩形指示器 
     */   
    @Watch[watchIndicatorConfig]
    @Link
    var indicatorConfig: IndicatorConfig
}

4 通用类

默认banner配置

public class BannerConfig { 
    public static let IS_AUTO_LOOP: Bool = true
    public static let LOOP_TIME: Int64 = 3000
    public static let SCROLL_TIME: Int64 = 600
    public static let INCREASE_COUNT: Int64 = 2
    public static let INDICATOR_NORMAL_COLOR: Color = Color(0x88ffffff)
    public static let INDICATOR_SELECTED_COLOR: Color = Color(0x88000000)
    public static let INDICATOR_NORMAL_WIDTH: Float64 = 5.0
    public static let INDICATOR_SELECTED_WIDTH: Float64 = 7.0
    public static let INDICATOR_SPACE: Float64 = 5.0
    public static let INDICATOR_MARGIN: Float64 = 5.0
    public static let INDICATOR_HEIGHT: Float64 = 3.0
    public static let INDICATOR_RADIUS: Float64 = 3.0
}

动画效果

public enum AnimatedEnum <: Equatable<AnimatedEnum> {
    | NonePage // 无动画效果
    | AlphaPage // alpha渐变
    | DepthPage // 叠层
    | MZScaleIn // 魅族效果 通常配合画廊
    | RotateDownPage // 圆形旋转翻页 中心点在下方
    | RotateUpPage // 圆形旋转翻页 中心点在上方
    | RotateY // 3D旋转翻页 旋转轴Y
    | ScaleIn // 缩放进入
    | ZoomOutPage // 缩放alpha进入
    
        
    /*
     * 获取动画效果index
     * 
     * 返回值 Int64 - 动画效果index
     */   
    public func value(): Int64 {
        return match (this) {
            case NonePage => 0
            case AlphaPage => 1
            case DepthPage => 2
            case MZScaleIn => 3
            case RotateDownPage => 4
            case RotateUpPage => 5
            case RotateY => 6
            case ScaleIn => 7
            case ZoomOutPage => 8
        }
    }
}