Skip to content

Latest commit

 

History

History
56 lines (49 loc) · 1.93 KB

Banner.md

File metadata and controls

56 lines (49 loc) · 1.93 KB

UIKit - Banner

Banner是一个可以自动无限循环滚动的控件,常用于应用首页中的广告栏中。

Banner控件的特点有如下几点:

  • 可以自动无限循环滚动,可以设置其自动滚动的时间间隔;
  • 支持自定义自动滚动和无限滚动;
  • indicator解耦,用户可以灵活的自定义indicator
  • 提供了item渲染item点击页面切换的监听,使用更加灵活。

1、自定义属性

名称 含义 默认值
app:b_scrollTimeSpan 自动滚动的时间间隔(s) 5
app:b_autoScroll 是否自动滚动 true
app:b_infiniteScroll 是否无限滚动 trie

2、布局

<my.itgungnir.ui.banner.Banner
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:b_autoScroll="false"
    app:b_infiniteScroll="true"
    app:b_scrollTimeSpan="5" />

3、使用

Banner的使用分为两步,分别是bindupdate

bind只需调用依次即可,可以写在如onCreateView()等方法中:

// 泛型表示Banner中加载的数据的类型
banner.bind<Int>(
    // layoutId:banner item的布局文件
    layoutId = R.layout.list_item_banner_child,
    // render:单个item的渲染回调,参数有position、view和data
    render = { _, view, data ->
        view.findViewById<ImageView>(R.id.imageView).imageResource = data
    },
    // onClick:单个item的点击事件,参数有position和data
    onClick = { position, _ ->
        Toast.makeText(this.context, "Click on position $position", Toast.LENGTH_SHORT).show()
    },
    // onPageChange:切换到某个item时的回调,参数有position、totalCount和data
    onPageChange = { position, totalCount, data ->
        indicator.text = "${position + 1}/$totalCount"
    }
)

update可以调用多次,可以写在如onBindView()等方法中:

banner.update(item.imageResources)