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

新建模塊有一個(gè)好處就是模塊是獨(dú)立的,以后可以進(jìn)行復(fù)用。
FrameLayout幀布局
FrameLayout 布局主要是用在一些小控件上,他比較靈活,而且不會(huì)耗太多的資源。新建一個(gè)類,繼承
FrameLayout。
class BannerView @JvmOverloads constructor(context: Context,attrs: AttributeSet?, defStyleAttr: Int = 0) :
FrameLayout(context,attrs,defStyleAttr)
我們的思路是這樣的,在FrameLayout 中我們 放一個(gè)ViewPager2 的控件,這個(gè)控件 搭建一個(gè)適配器,就可以起到廣告輪播的效果。
ViewPager2控件
在FrameLayout 中,我們搭建了一個(gè)ViewPager2 ,和前面的RecyclerView 一樣,他也需要搭建一個(gè) 適配器。
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)行綁定就可以了。
讓他定時(shí)滾動(dòng)起來:
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é)中,我們介紹了一個(gè)自定義布局,一個(gè)ViewPager2控件,組成了一個(gè)簡單的輪播廣告,這里的demo相對(duì)比較簡單,還是同樣的道理,這種控件還是直接用第三方的,功能豐富又好用,我們的例子只是拆分了一個(gè)原理出來而已。
到此這篇關(guān)于Kotlin FrameLayout與ViewPager2控件實(shí)現(xiàn)滾動(dòng)廣告欄方法的文章就介紹到這了,更多相關(guān)Kotlin滾動(dòng)廣告欄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android開發(fā)之如何自定義數(shù)字鍵盤詳解
這篇文章主要給大家介紹了關(guān)于Android開發(fā)之如何自定義數(shù)字鍵盤的相關(guān)資料,本文語言是基于kotlin實(shí)現(xiàn)的,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-09-09
Flutter實(shí)現(xiàn)笑嘻嘻的動(dòng)態(tài)表情的示例代碼
這篇文章主要為大家介紹了如何利用Flutter實(shí)現(xiàn)笑嘻嘻的動(dòng)態(tài)表情,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Flutter有一定幫助,感興趣的可以了解一下2022-04-04
Android實(shí)現(xiàn)Back功能代碼片段總結(jié)
今天把在公司實(shí)現(xiàn)某功能所用到的Back鍵功能模塊代碼片段做一個(gè)整理。方便以后直接拿出來使用2014-09-09
Android開發(fā)筆記之如何正確獲取WebView的網(wǎng)頁Title
獲取h5頁面的攜帶的title中是很簡單的,下面這篇文章主要給大家介紹了關(guān)于Android開發(fā)筆記之如何正確獲取WebView的網(wǎng)頁Title的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面來一起看看吧2018-09-09
Android藍(lán)牙通信之搜索藍(lán)牙設(shè)備
這篇文章主要介紹了Android藍(lán)牙通信之搜索藍(lán)牙設(shè)備,需要的朋友可以參考下2017-09-09
Android apk安裝替換卸載廣播的實(shí)現(xiàn)代碼
以下代碼實(shí)現(xiàn)比較簡單,根據(jù)接收到的Action來判斷應(yīng)用程序是安裝 卸載還是被替換成其他版本,需要的朋友可以參考下2013-07-07

