Android實現(xiàn)文字滾動播放效果的代碼
在開發(fā)時,我們會遇到文字過長,TextView不能完全展示,但又不想文字換行展示,這樣有時會影響美觀。這時我們就需要文字滾動播放,讓用戶可以看到所有的文字。
話不多說,直接上代碼:
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表示獲取焦點
return true;
}
}
使用方法:
<com.xxx.MarqueTextView android:singleLine="true" android:marqueeRepeatLimit="marquee_forever" android:ellipsize="marquee"/>
ps:下面看下android 橫向滾動文字的實現(xiàn)
android 橫向滾動文字的實現(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 {
/**
* 文字長度
*/
private float textLength = 0f;
/**
* 滾動條長度
*/
private float viewWidth = 0f;
/**
* 文本x軸 的坐標
*/
private float tx = 0f;
/**
* 文本Y軸的坐標
*/
private float ty = 0f;
/**
* 文本當(dāng)前長度
*/
private float temp_tx1 = 0.0f;
/**
* 文本當(dāng)前變換的長度
*/
private float temp_tx2 = 0x0f;
/**
* 文本滾動開關(guān)
*/
private boolean isStarting = false;
/**
* 畫筆對象
*/
private Paint paint = null;
/**
* 顯示的文字
*/
private String text = "";
/**
* 文本滾動速度
**/
private float sudu;
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 初始化自動滾動條,每次改變文字內(nèi)容時,都需要重新初始化一次
*
* @param windowManager 獲取屏幕
* @param text 顯示的內(nèi)容
* @param su 文字滾動的速度
*/
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)前文本字符串長度
viewWidth = this.getWidth();// 獲取寬度return mRight - mLeft;
if (viewWidth == 0) {
// 獲取當(dāng)前屏幕的屬性
Display display = windowManager.getDefaultDisplay();
viewWidth = display.getWidth();// 獲取屏幕寬度 viewWidth 是滾動的開始位置,需要修改的
// 可再此入手
}
tx = textLength;
temp_tx1 = viewWidth + textLength;
temp_tx2 = viewWidth + textLength * 2;// 自己定義,文字變化多少
// // 文字的大小+距頂部的距離
ty = this.getTextSize() + this.getPaddingTop();
}
/**
* 開始滾動
*/
public void starScroll() {
// 開始滾動
isStarting = true;
this.invalidate();// 刷新屏幕
}
/**
* 停止方法,停止?jié)L動
*/
public void stopScroll() {
// 停止?jié)L動
isStarting = false;
this.invalidate();// 刷新屏幕
}
/**
* 重寫onDraw方法
*/
@Override
protected void onDraw(Canvas canvas) {
if (isStarting) {
// A-Alpha透明度/R-Read紅色/g-Green綠色/b-Blue藍色
//paint.setARGB(255, 200, 200, 200);
canvas.drawText(text, temp_tx1 - tx, ty, paint);
tx += sudu;
// 當(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(), "滾動文字", 1);
marqueeTextView.setText("");
marqueeTextView.starScroll();
到此這篇關(guān)于Android實現(xiàn)文字滾動播放效果的代碼的文章就介紹到這了,更多相關(guān)Android實現(xiàn)文字滾動播放 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android scrollToTop實現(xiàn)點擊回到頂部(兼容PullTorefreshScrollview)
當(dāng)頁面滑動到底部,出現(xiàn)回到頂部的按鈕相信對大家來說并不陌生,下面這篇文章主要介紹了關(guān)于Android scrollToTop實現(xiàn)點擊回到頂部,并兼容PullTorefreshScrollview的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒。2017-03-03
Android ViewPager實現(xiàn)頁面左右切換效果
這篇文章主要為大家詳細介紹了Android ViewPager實現(xiàn)頁面左右切換效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04
Android自定義viewgroup 使用adapter適配數(shù)據(jù)(6)
這篇文章主要為大家詳細介紹了Android自定義viewgroup,使用adapter適配數(shù)據(jù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
Android應(yīng)用中利用ViewPager實現(xiàn)多頁面滑動切換效果示例
這篇文章主要介紹了Android應(yīng)用中利用ViewPager實現(xiàn)多頁面滑動切換效果示例,配合了Fragment和PagerTabStrip,需要的朋友可以參考下2016-03-03
Android實現(xiàn)自動變換大小的ViewPager
ViewPager使用適配器類將數(shù)據(jù)和view的處理分離,ViewPager的適配器叫PagerAdapter,這是一個抽象類,不能實例化,所以它有兩個子類:FragmentPagerAdapter 和 FragmentStatePagerAdapter,這兩個都是處理頁面為Fragment的情況2022-11-11
Android viewpager在最后一頁滑動之后跳轉(zhuǎn)到主頁面的實例代碼
這篇文章主要介紹了Android viewpager在最后一頁滑動之后跳轉(zhuǎn)到主頁面的實例代碼的相關(guān)資料,需要的朋友可以參考下2016-08-08

