Android實(shí)現(xiàn)文字滾動(dòng)播放效果的代碼
在開發(fā)時(shí),我們會(huì)遇到文字過長(zhǎng),TextView不能完全展示,但又不想文字換行展示,這樣有時(shí)會(huì)影響美觀。這時(shí)我們就需要文字滾動(dòng)播放,讓用戶可以看到所有的文字。
話不多說,直接上代碼:
import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; public class MarqueTextView extends TextView { public MarqueTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public MarqueTextView(Context context, AttributeSet attrs) { super(context, attrs); } public MarqueTextView(Context context) { super(context); } @Override public boolean isFocused() { //true表示獲取焦點(diǎn) return true; } }
使用方法:
<com.xxx.MarqueTextView android:singleLine="true" android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee"/>
ps:下面看下android 橫向滾動(dòng)文字的實(shí)現(xiàn)
android 橫向滾動(dòng)文字的實(shí)現(xiàn)
import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.view.Display; import android.view.WindowManager; import android.widget.TextView; public class MarqueeTextView extends TextView { /** * 文字長(zhǎng)度 */ private float textLength = 0f; /** * 滾動(dòng)條長(zhǎng)度 */ private float viewWidth = 0f; /** * 文本x軸 的坐標(biāo) */ private float tx = 0f; /** * 文本Y軸的坐標(biāo) */ private float ty = 0f; /** * 文本當(dāng)前長(zhǎng)度 */ private float temp_tx1 = 0.0f; /** * 文本當(dāng)前變換的長(zhǎng)度 */ private float temp_tx2 = 0x0f; /** * 文本滾動(dòng)開關(guān) */ private boolean isStarting = false; /** * 畫筆對(duì)象 */ private Paint paint = null; /** * 顯示的文字 */ private String text = ""; /** * 文本滾動(dòng)速度 **/ private float sudu; public MarqueeTextView(Context context, AttributeSet attrs) { super(context, attrs); } /** * 初始化自動(dòng)滾動(dòng)條,每次改變文字內(nèi)容時(shí),都需要重新初始化一次 * * @param windowManager 獲取屏幕 * @param text 顯示的內(nèi)容 * @param su 文字滾動(dòng)的速度 */ public void initScrollTextView(WindowManager windowManager, String text, float su) { // 得到畫筆,獲取父類的textPaint paint = this.getPaint(); // 得到文字 this.text = text; this.sudu = su; textLength = paint.measureText(text);// 獲得當(dāng)前文本字符串長(zhǎng)度 viewWidth = this.getWidth();// 獲取寬度return mRight - mLeft; if (viewWidth == 0) { // 獲取當(dāng)前屏幕的屬性 Display display = windowManager.getDefaultDisplay(); viewWidth = display.getWidth();// 獲取屏幕寬度 viewWidth 是滾動(dòng)的開始位置,需要修改的 // 可再此入手 } tx = textLength; temp_tx1 = viewWidth + textLength; temp_tx2 = viewWidth + textLength * 2;// 自己定義,文字變化多少 // // 文字的大小+距頂部的距離 ty = this.getTextSize() + this.getPaddingTop(); } /** * 開始滾動(dòng) */ public void starScroll() { // 開始滾動(dòng) isStarting = true; this.invalidate();// 刷新屏幕 } /** * 停止方法,停止?jié)L動(dòng) */ public void stopScroll() { // 停止?jié)L動(dòng) isStarting = false; this.invalidate();// 刷新屏幕 } /** * 重寫onDraw方法 */ @Override protected void onDraw(Canvas canvas) { if (isStarting) { // A-Alpha透明度/R-Read紅色/g-Green綠色/b-Blue藍(lán)色 //paint.setARGB(255, 200, 200, 200); canvas.drawText(text, temp_tx1 - tx, ty, paint); tx += sudu; // 當(dāng)文字滾動(dòng)到屏幕的最左邊 if (tx > temp_tx2) { // 把文字設(shè)置到最右邊開始 tx = textLength; } this.invalidate();// 刷新屏幕 } super.onDraw(canvas); } }
使用:
MarqueeTextView marqueeTextView = contentView.findViewById(R.id.five_text__view); marqueeTextView.initScrollTextView(getWindowManager(), "滾動(dòng)文字", 1); marqueeTextView.setText(""); marqueeTextView.starScroll();
到此這篇關(guān)于Android實(shí)現(xiàn)文字滾動(dòng)播放效果的代碼的文章就介紹到這了,更多相關(guān)Android實(shí)現(xiàn)文字滾動(dòng)播放 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android實(shí)現(xiàn)調(diào)用系統(tǒng)分享功能示例的總結(jié)
這篇文章主要介紹了通過Android調(diào)用系統(tǒng)分享文本信息、單張圖片、多個(gè)文件和指定分享到微信、QQ,同時(shí)分享圖片和文字的功能示例,小編覺得挺不錯(cuò),一起跟隨小編過來看看吧2018-05-05打飛機(jī)游戲終極BOSS Android實(shí)戰(zhàn)打飛機(jī)游戲完結(jié)篇
打飛機(jī)游戲終極BOSS,Android實(shí)戰(zhàn)打飛機(jī)游戲完結(jié)篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07Android自定義View實(shí)現(xiàn)時(shí)鐘功能
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)時(shí)鐘功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09Android游戲開發(fā)之碰撞檢測(cè)(矩形碰撞、圓形碰撞、像素碰撞)
這篇文章主要介紹了Android游戲開發(fā)之碰撞檢測(cè),主要內(nèi)容包含矩形碰撞、圓形碰撞、像素碰撞、多矩形碰撞的代碼,感興趣的小伙伴們可以參考一下2016-07-07Android 取得狀態(tài)欄、任務(wù)欄高度的小例子
Android 取得狀態(tài)欄、任務(wù)欄高度的小例子,需要的朋友可以參考一下2013-05-05Android自定義驗(yàn)證碼輸入框的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Android自定義驗(yàn)證碼輸入框的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02Android編程使用自定義shape實(shí)現(xiàn)shadow陰影效果的方法
這篇文章主要介紹了Android編程使用自定義shape實(shí)現(xiàn)shadow陰影效果的方法,涉及Android中xml文件布局的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11Android實(shí)現(xiàn)擴(kuò)展Menu的方法
這篇文章主要介紹了Android實(shí)現(xiàn)擴(kuò)展Menu的方法,涉及Android操作menu菜單的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10