1. 程式人生 > >一個Android文字輪播控制元件,實現了可垂直跑、可水平跑的跑馬燈

一個Android文字輪播控制元件,實現了可垂直跑、可水平跑的跑馬燈

Android文字輪播控制元件

Apache 2.0 License

現在的絕大數APP特別是類似淘寶京東等這些大型APP都有文字輪播介面,實現迴圈輪播多個廣告詞等功能;這種控制元件俗稱“跑馬燈”,而TextBannerView已經實現了可垂直跑、可水平跑的跑馬燈了。

效果圖

Attributes屬性(TextBannerView佈局檔案中呼叫)

Attributes format describe
setInterval integer 文字切換時間間隔,預設3000
setAnimDuration integer 動畫持續時間,預設1500
setTextSize dimension 設定文字尺寸
setTextColor color 設定文字顏色,預設黑色
setSingleLine boolean 是否為顯示單行
setGravity 文字顯示位置,預設左邊居中;可設定left、center、right
setDirection 文字輪播方向,預設水平從右到左輪播:right_to_left;還可以設定left_to_right(從左到右輪播)、bottom_to_top(從底部到頂部輪播)、top_to_bottom(從頂部到底部輪播)
setFlags 新增文字下劃線、中劃線。預設沒有劃線;可設定underline(下劃線)、strike(中劃線)。 支援版本:v1.0.4開始
setTypeface 設定字型樣式型別,如加粗、斜體、斜體加粗。預設為普通型別;可設定bold(加粗)、italic(斜體)、italic_bold(斜體加粗)。 支援版本:v1.0.4開始

方法

方法名 描述 版本限制
setDatas(List datas) 設定資料,型別:List
startViewAnimator() 設定開始文字切換(預設自動)
stopViewAnimator() 設定暫停文字切換
setItemOnClickListener(listener) 設定點選監聽事件回撥
setDatasWithDrawableIcon() 設定帶圖示的資料;第一個引數:資料 。第二引數:drawable. 第三引數drawable尺寸。第四引數圖示位置(僅支援Gravity.LEFT、Gravity.TOP、Gravity.RIGHT、Gravity.BOTTOM) 1.0.2開始

使用步驟

Step 1.依賴TextBannerView

Gradle

dependencies{
    compile 'com.superluo:textbannerview:1.0.5'  //最新版本
}

或者引用本地lib

compile project(':textbannerlibrary')

Maven

<dependency>
  <groupId>com.superluo</groupId>
  <artifactId>textbannerview</artifactId>
  <version>1.0.5</version>
  <type>pom</type>
</dependency>

Step 2.在佈局檔案中新增TextBannerView,可以設定自定義屬性

<com.superluo.textbannerlibrary.TextBannerView
        android:id="@+id/tv_banner"
        android:layout_width="match_parent"
        android:layout_height="38dp"
        android:background="#cc8ac6"
        app:setGravity="right"
        app:setTextColor="#fff"/>

Step 3.在Activity或者Fragment中配置TextBannerView

//初始化TextBannerView
TextBannerView tvBanner = (TextBannerView) findViewById(R.id.tv_banner);

//設定資料
List<String> list = new ArrayList<>();

list.add("學好Java、Android、C#、C、ios、html+css+js");
list.add("走遍天下都不怕!!!!!");
list.add("不是我吹,就怕你做不到,哈哈");
list.add("superluo");
list.add("你是最棒的,奔跑吧孩子!");

//呼叫setDatas(List<String>)方法後,TextBannerView自動開始輪播
//注意:此方法目前只接受List<String>型別
tvBanner.setDatas(mList);


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);
        

//設定TextBannerView點選監聽事件,返回點選的data資料, 和position位置
tvBanner.setItemOnClickListener(new ITextBannerItemClickListener() {
            @Override
            public void onItemClick(String data, int position) {
                Log.i("點選了:",String.valueOf(position)+">>"+data);
            }
        });

Step 4.在Activity或者Fragment中的onResume()和onStop()方法分別呼叫startViewAnimator()和stopViewAnimator(),防止返回頁面出現文字重影問題!

@override
protected void onResume() {
    super.onResume();
    tvBanner.startViewAnimator();
}

、、、、、、

@override
protected void onStop() {
    super.onStop();
    tvBanner.stopViewAnimator();
}