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

新建模塊有一個好處就是模塊是獨立的,以后可以進行復用。
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ū)別了,也就是跟界面進行綁定就可以了。
讓他定時滾動起來:
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相對比較簡單,還是同樣的道理,這種控件還是直接用第三方的,功能豐富又好用,我們的例子只是拆分了一個原理出來而已。
到此這篇關于Kotlin FrameLayout與ViewPager2控件實現(xiàn)滾動廣告欄方法的文章就介紹到這了,更多相關Kotlin滾動廣告欄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android開發(fā)之如何自定義數(shù)字鍵盤詳解
這篇文章主要給大家介紹了關于Android開發(fā)之如何自定義數(shù)字鍵盤的相關資料,本文語言是基于kotlin實現(xiàn)的,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-09-09
Flutter實現(xiàn)笑嘻嘻的動態(tài)表情的示例代碼
這篇文章主要為大家介紹了如何利用Flutter實現(xiàn)笑嘻嘻的動態(tài)表情,文中的示例代碼講解詳細,對我們學習Flutter有一定幫助,感興趣的可以了解一下2022-04-04
Android實現(xiàn)Back功能代碼片段總結(jié)
今天把在公司實現(xiàn)某功能所用到的Back鍵功能模塊代碼片段做一個整理。方便以后直接拿出來使用2014-09-09
Android開發(fā)筆記之如何正確獲取WebView的網(wǎng)頁Title
獲取h5頁面的攜帶的title中是很簡單的,下面這篇文章主要給大家介紹了關于Android開發(fā)筆記之如何正確獲取WebView的網(wǎng)頁Title的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友們下面來一起看看吧2018-09-09
Android apk安裝替換卸載廣播的實現(xiàn)代碼
以下代碼實現(xiàn)比較簡單,根據(jù)接收到的Action來判斷應用程序是安裝 卸載還是被替換成其他版本,需要的朋友可以參考下2013-07-07

