Android实现文字滚动播放效果的代码
在开发时,我们会遇到文字过长,TextView不能完全展示,但又不想文字换行展示,这样有时会影响美观。这时我们就需要文字滚动播放,让用户可以看到所有的文字。
话不多说,直接上代码:
importandroid.content.Context;
importandroid.util.AttributeSet;
importandroid.widget.TextView;
publicclassMarqueTextViewextendsTextView{
publicMarqueTextView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
}
publicMarqueTextView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
publicMarqueTextView(Contextcontext){
super(context);
}
@Override
publicbooleanisFocused(){
//true表示获取焦点
returntrue;
}
}
使用方法:
ps:下面看下android横向滚动文字的实现
android横向滚动文字的实现
importandroid.content.Context;
importandroid.graphics.Canvas;
importandroid.graphics.Paint;
importandroid.util.AttributeSet;
importandroid.view.Display;
importandroid.view.WindowManager;
importandroid.widget.TextView;
publicclassMarqueeTextViewextendsTextView{
/**
*文字长度
*/
privatefloattextLength=0f;
/**
*滚动条长度
*/
privatefloatviewWidth=0f;
/**
*文本x轴的坐标
*/
privatefloattx=0f;
/**
*文本Y轴的坐标
*/
privatefloatty=0f;
/**
*文本当前长度
*/
privatefloattemp_tx1=0.0f;
/**
*文本当前变换的长度
*/
privatefloattemp_tx2=0x0f;
/**
*文本滚动开关
*/
privatebooleanisStarting=false;
/**
*画笔对象
*/
privatePaintpaint=null;
/**
*显示的文字
*/
privateStringtext="";
/**
*文本滚动速度
**/
privatefloatsudu;
publicMarqueeTextView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
/**
*初始化自动滚动条,每次改变文字内容时,都需要重新初始化一次
*
*@paramwindowManager获取屏幕
*@paramtext显示的内容
*@paramsu文字滚动的速度
*/
publicvoidinitScrollTextView(WindowManagerwindowManager,Stringtext,floatsu){
//得到画笔,获取父类的textPaint
paint=this.getPaint();
//得到文字
this.text=text;
this.sudu=su;
textLength=paint.measureText(text);//获得当前文本字符串长度
viewWidth=this.getWidth();//获取宽度returnmRight-mLeft;
if(viewWidth==0){
//获取当前屏幕的属性
Displaydisplay=windowManager.getDefaultDisplay();
viewWidth=display.getWidth();//获取屏幕宽度viewWidth是滚动的开始位置,需要修改的
//可再此入手
}
tx=textLength;
temp_tx1=viewWidth+textLength;
temp_tx2=viewWidth+textLength*2;//自己定义,文字变化多少
////文字的大小+距顶部的距离
ty=this.getTextSize()+this.getPaddingTop();
}
/**
*开始滚动
*/
publicvoidstarScroll(){
//开始滚动
isStarting=true;
this.invalidate();//刷新屏幕
}
/**
*停止方法,停止滚动
*/
publicvoidstopScroll(){
//停止滚动
isStarting=false;
this.invalidate();//刷新屏幕
}
/**
*重写onDraw方法
*/
@Override
protectedvoidonDraw(Canvascanvas){
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();//刷新屏幕
}
super.onDraw(canvas);
}
}
使用:
MarqueeTextViewmarqueeTextView=contentView.findViewById(R.id.five_text__view);
marqueeTextView.initScrollTextView(getWindowManager(),"滚动文字",1);
marqueeTextView.setText("");
marqueeTextView.starScroll();
到此这篇关于Android实现文字滚动播放效果的代码的文章就介绍到这了,更多相关Android实现文字滚动播放内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!