Android文字上下滾動
阿新 • • 發佈:2020-11-23
一、效果圖
二、原理說明
設定兩個textview,然後每一次滾動出現一個textview
三、關鍵程式碼
新增資料
private void init() { mTextview = (AutoTextView) findViewById(R.id.textview); titleList = new ArrayList<>(); titleList.add("2.4版本更新"); titleList.add("哈哈哈哈哈哈"); titleList.add("水水水水水水水水水水"); mTextview.setTextList(titleList); mTextview.setText(25, 5, Color.RED);//設定屬性 mTextview.setTextStillTime(3000);//設定停留時長間隔 mTextview.setAnimTime(300);//設定進入和退出的時間間隔 mTextview.setOnItemClickListener(new AutoTextView.OnItemClickListener() { @Override public void onItemClick(int position) { Toast.makeText(MainActivity.this, "點選了 : " + titleList.get(position), Toast.LENGTH_SHORT).show(); } }); }
滾動的時間間隔
public void setTextStillTime(final long time){ handler =new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case FLAG_START_AUTO_SCROLL: if (textList.size() > 0) { currentId++; setText(textList.get(currentId % textList.size())); } handler.sendEmptyMessageDelayed(FLAG_START_AUTO_SCROLL,time); break; case FLAG_STOP_AUTO_SCROLL: handler.removeMessages(FLAG_START_AUTO_SCROLL); break; } } }; }
設定資料來源
public void setTextList(ArrayList<String> titles) { textList.clear(); textList.addAll(titles); currentId = -1; }
滾動的狀態設定
/** * 開始滾動 */ public void startAutoScroll() { handler.sendEmptyMessage(FLAG_START_AUTO_SCROLL); } /** * 停止滾動 */ public void stopAutoScroll() { handler.sendEmptyMessage(FLAG_STOP_AUTO_SCROLL); }
佈局程式碼
主佈局程式碼
<?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.example.myapplication.AutoTextView android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
子佈局程式碼
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv_banner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:ellipsize="end" android:singleLine="true" android:textColor="#000" android:textSize="12sp" /> <TextView android:id="@+id/tv_banner2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:ellipsize="end" android:singleLine="true" android:textColor="#f00" android:textSize="12sp" /> </RelativeLayout >
優化:設定監聽世間
/** * 設定點選事件監聽 * @param itemClickListener */ public void setOnItemClickListener(OnItemClickListener itemClickListener) { this.itemClickListener = itemClickListener; } /** * 輪播文字點選監聽器 */ public interface OnItemClickListener { /** * 點選回撥 * @param position 當前點選ID */ void onItemClick(int position); }