android 必会之 ——用Banner写一个上下滚动的Text
文章目录
前言
一般用来写搜索框里面的推荐
一、Banner
一般用来做轮播图,既然可以做轮播图,那轮播文字也没啥问题
1------效果

二、使用步骤
1.导入依赖
代码如下(示例):
implementation 'com.youth.banner:banner:2.1.0'
导入依赖之后------ 4.2.2版本的studio 编译的时候会报错↓
说是超类不能解析, 百度了一下,应该是studio版本太高,banner版本太低,要导入一串代码
!!注意前后都不能有空格 不然会报错
用来解决版本问题
android.enableJetifier=true
2.布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.youth.banner.Banner
android:id="@+id/main_ban"
android:layout_width="match_parent"
android:layout_height="100dp"
></com.youth.banner.Banner>
</LinearLayout>
3.实体类
package com.example.myapplication
class TextBanner_Entity {
private var title:String ?= null
//构造
constructor(title: String?) {
this.title = title
}
}
4.适配器
package com.example.myapplication
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.youth.banner.adapter.BannerAdapter
import com.youth.banner.util.BannerUtils
class TextBanner_Adapter : BannerAdapter<TextBanner_Entity, TextBanner_Adapter.TextBannerHolder> {
/**
* 构造方法来 传入数据集合
*/
constructor(list: ArrayList<TextBanner_Entity>) : super(list) {
}
/**
* 返回文字到banner
*/
override fun onCreateHolder(parent: ViewGroup?, viewType: Int): TextBannerHolder {
return TextBannerHolder(BannerUtils.getView(parent!!, R.layout.item_banner_text))
}
/**
*设置文字内容
*/
override fun onBindView(
holder: TextBannerHolder,
data: TextBanner_Entity,
position: Int,
size: Int
) {
holder.title?.setText("" + data.title)
}
/**
* 内部类 用来优化
*/
class TextBannerHolder : RecyclerView.ViewHolder {
var title: TextView? = null
constructor(itemView: View) : super(itemView) {
title = itemView.findViewById(R.id.news_text_title)
}
}
}
4.1适配器需要用的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/news_text_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="#999" />
</LinearLayout>
5.Activity
package com.example.myapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.youth.banner.Banner
class MainActivity : AppCompatActivity() {
//找到banner
private val mainBan: Banner<TextBanner_Entity, TextBanner_Adapter> by lazy {
findViewById<Banner<TextBanner_Entity, TextBanner_Adapter>>(
R.id.main_ban
)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//存放数据的集合
var titlelist: ArrayList<TextBanner_Entity> = ArrayList()
titlelist.add(TextBanner_Entity("测试1"))
titlelist.add(TextBanner_Entity("测试2"))
titlelist.add(TextBanner_Entity("测试3"))
titlelist.add(TextBanner_Entity("测试4"))
//初始化适配器
var textbanAdapter = TextBanner_Adapter(titlelist)
//设置适配器
mainBan.setAdapter(textbanAdapter)
.setOrientation(Banner.VERTICAL)//设置竖着动
//开始播放 实际运用中 一定记得释放资源
mainBan.start()
}
}
总结
得到帮助的 帮忙点点 赞谢谢~
版权声明:本文为Darker_Li原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。