Android自定義View實現文字輪播效果
文字輪播可以有效吸引使用者眼球,並且適用於一行文字顯示不下的場景,一些廣告都會採用這種方式。TextView自帶輪播屬性,除了使用這個屬性之外,本文采用了比較有意思的小演算法,通過自定義View的方式實現文字輪播效果。
自定義View程式碼如下:
package ad.scrolltextview;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
/**
* Created by yayun on 2017/6/3.
* at 20:08
*/
public class ScrollTextView extends View {
private Paint paint;
private int x = 0;
private MyThread myThread;
public ScrollTextView(Context context) {
super(context);
init();
}
private void init() {
paint = new Paint();
paint.setTextSize(45);
paint.setColor(Color.RED);
if (myThread == null) {
myThread = new MyThread();
myThread.start();
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawText("YAYUN", x, 50, paint);
}
class MyThread extends Thread {
@Override
public void run() {
while (true) {
x ++;
if (x > getWidth()) {
x = (int) -paint.measureText("YAYUN");
}
postInvalidate();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
程式碼很短,不到五十行,這裡僅僅是實現效果,為開發者提供思路,並沒有很好的考慮擴充性,讀者可自行重構程式碼。
實現輪播的原理主要是建立了一個執行緒,線上程中不斷動態改變x這一橫座標的值並呼叫postInvalidate方法來實現不斷重新整理繪製文字,注意,這裡為了保證文字滾動到末尾之後還可以從螢幕左邊滾動出來,對X值進行了判斷。
在MainActivity中引用這個自定義View,程式碼如下:
package ad.scrolltextview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new ScrollTextView(this));
}
}
執行例項如下:
可以通過調節X每次增長的值和執行緒睡眠的時間來控制輪播速度,調整程式碼如下:
如果您喜歡,請轉發至朋友圈,在此感謝。
相關文章
- 自定義view————Banner輪播View
- 教你如何實現 Android TextView 文字輪播效果AndroidTextView
- Android UI 實現廣告 Banner 輪播效果AndroidUI
- Axure實現輪播效果
- jQuery實現輪播效果jQuery
- Android 自定義View 點贊效果AndroidView
- Android 自定義一個輪播圖Android
- Android自定義View實現流式佈局(熱門標籤效果)AndroidView
- 直播系統程式碼,Android自定義View實現呼吸燈效果AndroidView
- 直播平臺原始碼,Android自定義View實現呼吸燈效果原始碼AndroidView
- Android自定義View——從零開始實現雪花飄落效果AndroidView
- js、jQuery實現文字上下無縫輪播、滾動效果JSjQuery
- Android自定義View——從零開始實現覆蓋翻頁效果AndroidView
- Android自定義View 雷達掃描效果AndroidView
- Android 自定義輪播圖片控制元件Android控制元件
- Android自定義View之定點寫文字AndroidView
- 自定義View:畫布實現自定義View(折線圖的實現)View
- Android自定義View——從零開始實現書籍翻頁效果(二)AndroidView
- Android自定義View——從零開始實現書籍翻頁效果(四)AndroidView
- Android自定義View——從零開始實現書籍翻頁效果(三)AndroidView
- Android自定義View——從零開始實現書籍翻頁效果(一)AndroidView
- Android自定義view實現數字時鐘AndroidView
- 自定義View:自定義屬性(自定義按鈕實現)View
- 【Android自定義View】繪圖之文字篇(三)AndroidView繪圖
- 原生JS實現輪播圖的效果JS
- Android自定義View教你一步一步實現即刻點贊效果AndroidView
- Android技術分享|【自定義View】實現Material Design的Loading效果AndroidViewMaterial Design
- Android自定義View:View(二)AndroidView
- Flutter自定義View的實現FlutterView
- 自定義view實現半圓環View
- Android 自定義viewAndroidView
- Android: 自定義ViewAndroidView
- Android 自定義 View 實現橫行時間軸AndroidView
- Android自定義View:快遞時間軸實現AndroidView
- Android自定義View實現微信打飛機遊戲AndroidView遊戲
- carousel 輪播自定義進度條
- uniapp自定義卡片輪播圖APP
- Android 自定義View UC下拉重新整理效果(二)AndroidView