Kotlin FrameLayout與ViewPager2控件實(shí)現(xiàn)滾動(dòng)廣告欄方法
在上一節(jié)中我們簡(jiǎn)單的介紹了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è)簡(jiǎn)單的輪播廣告,這里的demo
相對(duì)比較簡(jiǎn)單,還是同樣的道理,這種控件還是直接用第三方的,功能豐富又好用,我們的例子只是拆分了一個(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 View與Compose互相調(diào)用實(shí)例探究
這篇文章主要介紹了Android View與Compose互相調(diào)用,Compose 具有超強(qiáng)的兼容性,兼容現(xiàn)有的所有代碼,Compose 能夠與現(xiàn)有 View 體系并存,可實(shí)現(xiàn)漸進(jìn)式替換2023-01-01Android開發(fā)之圖形圖像與動(dòng)畫(二)Animation實(shí)現(xiàn)圖像的漸變/縮放/位移/旋轉(zhuǎn)
Android 平臺(tái)提供了兩類動(dòng)畫,一類是Tween動(dòng)畫,就是對(duì)場(chǎng)景里的對(duì)象不斷的進(jìn)行圖像變化來產(chǎn)生動(dòng)畫效果;旋轉(zhuǎn)、平移、放縮和漸變等等,感興趣的朋友可以了解下啊,希望本文對(duì)你有所幫助2013-01-01Android ChipGroup收起折疊效果實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Android ChipGroup收起折疊效果實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Android中的Button自定義點(diǎn)擊效果實(shí)例代碼
Android中的Button自定義點(diǎn)擊效果實(shí)例代碼,需要的朋友可以參考一下2013-05-05Android Studio修改Log信息顏色的實(shí)現(xiàn)
這篇文章主要介紹了Android Studio修改Log信息顏色的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04Android編程實(shí)現(xiàn)設(shè)置按鈕背景透明與半透明及圖片背景透明的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)設(shè)置按鈕背景透明與半透明及圖片背景透明的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Button及ImageButton的背景屬性設(shè)置技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-12-12Android UniversalVideoView實(shí)現(xiàn)視頻播放器
這篇文章主要為大家詳細(xì)介紹了Android UniversalVideoView實(shí)現(xiàn)視頻播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04如何使用Android實(shí)現(xiàn)接口實(shí)信息在留言板顯示
這篇文章主要介紹了如何使用Android接口實(shí)現(xiàn)信息的留言板顯示,需要的朋友可以參考下2015-07-07