现在的很多APP特别是类似淘宝京东等这些大型APP都有文字轮播界面,实现循环轮播多个广告词等功能;这种空间俗称“跑马灯”,而TextBannerView已经实现了可垂直跑、可水平跑的跑马灯了。

1.效果图

我这里的需求是在首页进行搜索关键字的轮播,上传不了动图,只能看个静图,如下:

android 广告轮播效果 安卓轮播app_文字轮播

2.控件属性和方法

1、属性

Attributes

describe

setInterval

文字切换时间间隔,默认3000

setAnimDuration

动画持续时间,默认1500

setTextSize

设置文字尺寸

setTextColor

设置文字颜色,默认黑色

setSingleLine

是否为显示单行

setGravity

文字显示位置,默认左边居中;可设置left、center、right

setDirection

文字轮播方向,默认水平从右到左轮播:right_to_left;还可以设置left_to_right(从左到右轮播)、bottom_to_top(从底部到顶部轮播)、top_to_bottom(从顶部到底部轮播)

2 、方法:

方法名

描述

setDatas(List datas)

设置数据

startViewAnimator()

设置开始文字切换(默认自动)

stopViewAnimator()

设置暂停文字切换

setItemOnClickListener(listener)

设置点击监听事件回调

setDatasWithDrawableIcon()

设置带图标的数据;第一个参数:数据 。第二参数:drawable. 第三参数drawable尺寸。第四参数图标位置(仅支持Gravity.LEFT、Gravity.TOP、Gravity.RIGHT、Gravity.BOTTOM)

3.使用步骤
1. 引入依赖
//文字轮播控件
    implementation 'com.superluo:textbannerview:1.0.5'
2. 布局中使用TextBannerView
<com.superluo.textbannerlibrary.TextBannerView
                android:id="@+id/tv_banner"
                android:visibility="gone"
                app:setInterval="1500"
                app:setDirection="top_to_bottom"
                app:setTextColor="@color/theme_defaultText"
                app:setTextSize="@dimen/default_size"
                android:background="@color/white"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"/>
3…在Activity或者Fragment中配置TextBannerView

我这里是在Fragment中设置的

// 1.初始化TextBannerView
TextBannerView tv_banner = (TextBannerView) findViewById(R.id.tv_banner);
 
//2. 设置数据
List<String> promoList= new ArrayList<>();

 //我这里的data 是从后台获取到的
for(int i=0;i<data.length();i++){
    JSONObject item = data.getJSONObject(i);
    promoList.add(item.getString("keyword"));
  }
tv_banner.setDatas(promoList);
 
//调用setDatas(List<String>)方法后,TextBannerView自动开始轮播
//注意:此方法目前只接受List<String>类型

 
 // 2.
Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);
/**这里可以设置带图标的数据(1.0.2新方法),比setDatas方法多了带图标参数;
第一个参数:数据 。
第二参数:drawable. 
第三参数:drawable尺寸。
第四参数:图标位置仅支持Gravity.LEFT、Gravity.TOP、Gravity.RIGHT、Gravity.BOTTOM
*/
mTvBanner.setDatasWithDrawableIcon(mList,drawable,18, Gravity.LEFT);
        
 
// 3. 设置TextBannerView点击监听事件,返回点击的data数据, 和position位置
 tv_banner.setItemOnClickListener(new ITextBannerItemClickListener() {
            @Override
            public void onItemClick(String data, int position) {
            //获取点击的数据,然后需要做的事情,根据情况而定,我这里是实现跳转
                intent = new Intent(Classify.this.getContext(), GoodSearch.class);
                intent.putExtra("promoKeyWord",promoList.get(position));
                startActivity(intent);
            }
        });


// 4.为了出现重影,还得在onResume和onStop中设置
 @Override
    public void onResume() {
        super.onResume();
        tv_banner.startViewAnimator(); //1.防止出现重影
    }

    @Override
    public void onStop() {
        super.onStop();
       tv_banner.stopViewAnimator();  //2.防止出现重影
    }