Android实现⽂字滚动播放效果的代码
在开发时,我们会遇到⽂字过长,TextView不能完全展⽰,但⼜不想⽂字换⾏展⽰,这样有时会影响美观。这时我们就需要⽂字滚动播放,让⽤户可以看到所有的⽂字。
话不多说,直接上代码:
t.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;
}
}
使⽤⽅法:
&MarqueTextView
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
android:ellipsize="marquee"/>
ps:下⾯看下android 横向滚动⽂字的实现
android 横向滚动⽂字的实现
t.Context;
aphics.Canvas;
aphics.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;
/**
* ⽂本当前长度
*/
private float temp_tx1 = 0.0f;
/**
* ⽂本当前变换的长度
*/
private float temp_tx2 = 0x0f;
/**
* ⽂本滚动开关
*/
marquee marqueeprivate boolean isStarting = false;
/**
* 画笔对象
*/
private Paint paint = null;
/**
* 显⽰的⽂字
*/
private String text = "";
/**
* ⽂本滚动速度
**/
private float sudu;
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 初始化⾃动滚动条,每次改变⽂字内容时,都需要重新初始化⼀次
*
* @param windowManager 获取屏幕
* @param text  显⽰的内容
* @param su  ⽂字滚动的速度
*/
public void initScrollTextView(WindowManager windowManager, String text, float su) {
/
/ 得到画笔,获取⽗类的textPaint
paint = Paint();
// 得到⽂字
< = text;
this.sudu = su;
textLength = asureText(text);// 获得当前⽂本字符串长度
viewWidth = Width();// 获取宽度return mRight - mLeft;
if (viewWidth == 0) {
// 获取当前屏幕的属性
Display display = DefaultDisplay();
viewWidth = Width();// 获取屏幕宽度 viewWidth 是滚动的开始位置,需要修改的  // 可再此⼊⼿
}
tx = textLength;
temp_tx1 = viewWidth + textLength;
temp_tx2 = viewWidth + textLength * 2;// ⾃⼰定义,⽂字变化多少
// // ⽂字的⼤⼩+距顶部的距离
ty = TextSize() + PaddingTop();
}
/**
* 开始滚动
*/
public void starScroll() {
/
/ 开始滚动
isStarting = true;
this.invalidate();// 刷新屏幕
}
/**
* 停⽌⽅法,停⽌滚动
*/
public void stopScroll() {
// 停⽌滚动
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;
/
/ 当⽂字滚动到屏幕的最左边
if (tx > temp_tx2) {
// 把⽂字设置到最右边开始
tx = textLength;
}
this.invalidate();// 刷新屏幕
}
}
}
使⽤:
MarqueeTextView marqueeTextView = contentView.findViewById(R.id.five_text__view);
marqueeTextView.initScrollTextView(getWindowManager(), "滚动⽂字", 1);
marqueeTextView.setText("");
marqueeTextView.starScroll();
到此这篇关于Android实现⽂字滚动播放效果的代码的⽂章就介绍到这了,更多相关Android实现⽂字滚动播放内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。