Kotlin FrameLayout與ViewPager2控件實現(xiàn)滾動廣告欄方法
在上一節(jié)中我們簡單的介紹了RecyclerView 的使用,他是整個開發(fā)的重點控件,這一節(jié)我們來看看FrameLayout 布局結(jié)合ViewPager2,開發(fā)一個廣告控件。
新模塊banner
先創(chuàng)建一個新的模塊,取名為banner,用來創(chuàng)建我們的滾動廣告條控件。

新建模塊有一個好處就是模塊是獨立的,以后可以進(jìn)行復(fù)用。
FrameLayout幀布局
FrameLayout 布局主要是用在一些小控件上,他比較靈活,而且不會耗太多的資源。新建一個類,繼承
FrameLayout。
class BannerView @JvmOverloads constructor(context: Context,attrs: AttributeSet?, defStyleAttr: Int = 0) :
FrameLayout(context,attrs,defStyleAttr)
我們的思路是這樣的,在FrameLayout 中我們 放一個ViewPager2 的控件,這個控件 搭建一個適配器,就可以起到廣告輪播的效果。
ViewPager2控件
在FrameLayout 中,我們搭建了一個ViewPager2 ,和前面的RecyclerView 一樣,他也需要搭建一個 適配器。
inner class Adapter(var dataList:ArrayList<BannerInfo>):RecyclerView.Adapter<Adapter.ViewHolder>(){
inner class ViewHolder(view:View):RecyclerView.ViewHolder(view){
var pic:ImageView = view.findViewById(R.id.image_view1)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_banner_image,parent,false)
val viewHolder = ViewHolder(view as View)
return viewHolder;
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val banner = dataList[position]
holder.pic.setImageResource(banner.imageId)
}
override fun getItemCount(): Int {
return dataList.size
}
}適配器的構(gòu)建原理和前面的章節(jié)就沒有什么區(qū)別了,也就是跟界面進(jìn)行綁定就可以了。
讓他定時滾動起來:
autoplayJob = viewScope.launch {
while (true){
if (viewPager.currentItem >= dataList.size-1){
viewPager.setCurrentItem(0,true)
}
else{
viewPager.setCurrentItem(viewPager.currentItem+1,true)
}
delay(3000)
}
}在主界面的界面中,引入Banner控件
<com.kotlin.banner.BannerView
android:id="@+id/bannerView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
初始化控件:
var bfs:ArrayList<BannerInfo> = arrayListOf(BannerInfo(R.drawable.banner_1, displayText = "hello"),
BannerInfo(R.drawable.banner_2, displayText = "hello"),
BannerInfo(R.drawable.banner_3, displayText = "hello"))
var bv:BannerView = findViewById(R.id.bannerView1)
bv.setData(bfs)
小結(jié)
這節(jié)中,我們介紹了一個自定義布局,一個ViewPager2控件,組成了一個簡單的輪播廣告,這里的demo相對比較簡單,還是同樣的道理,這種控件還是直接用第三方的,功能豐富又好用,我們的例子只是拆分了一個原理出來而已。
到此這篇關(guān)于Kotlin FrameLayout與ViewPager2控件實現(xiàn)滾動廣告欄方法的文章就介紹到這了,更多相關(guān)Kotlin滾動廣告欄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android View與Compose互相調(diào)用實例探究
這篇文章主要介紹了Android View與Compose互相調(diào)用,Compose 具有超強(qiáng)的兼容性,兼容現(xiàn)有的所有代碼,Compose 能夠與現(xiàn)有 View 體系并存,可實現(xiàn)漸進(jìn)式替換2023-01-01
Android開發(fā)之圖形圖像與動畫(二)Animation實現(xiàn)圖像的漸變/縮放/位移/旋轉(zhuǎn)
Android 平臺提供了兩類動畫,一類是Tween動畫,就是對場景里的對象不斷的進(jìn)行圖像變化來產(chǎn)生動畫效果;旋轉(zhuǎn)、平移、放縮和漸變等等,感興趣的朋友可以了解下啊,希望本文對你有所幫助2013-01-01
Android ChipGroup收起折疊效果實現(xiàn)詳解
這篇文章主要為大家介紹了Android ChipGroup收起折疊效果實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Android Studio修改Log信息顏色的實現(xiàn)
這篇文章主要介紹了Android Studio修改Log信息顏色的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Android編程實現(xiàn)設(shè)置按鈕背景透明與半透明及圖片背景透明的方法
這篇文章主要介紹了Android編程實現(xiàn)設(shè)置按鈕背景透明與半透明及圖片背景透明的方法,結(jié)合實例形式較為詳細(xì)的分析了Button及ImageButton的背景屬性設(shè)置技巧,非常簡單實用,需要的朋友可以參考下2015-12-12
Android UniversalVideoView實現(xiàn)視頻播放器
這篇文章主要為大家詳細(xì)介紹了Android UniversalVideoView實現(xiàn)視頻播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04
如何使用Android實現(xiàn)接口實信息在留言板顯示
這篇文章主要介紹了如何使用Android接口實現(xiàn)信息的留言板顯示,需要的朋友可以參考下2015-07-07

