Android实现文字滚动播放效果的代码
在开发时,我们会遇到文字过长,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 横向滚动文字的实现
android 横向滚动文字的实现
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; /** * 文本当前长度 */ private float temp_tx1 = 0.0f; /** * 文本当前变换的长度 */ private float temp_tx2 = 0x0f; /** * 文本滚动开关 */ private 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 = this.getPaint(); // 得到文字 this.text = text; this.sudu = su; textLength = paint.measureText(text);// 获得当前文本字符串长度 viewWidth = this.getWidth();// 获取宽度return mRight - mLeft; if (viewWidth == 0) { // 获取当前屏幕的属性 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();// 刷新屏幕 } /** * 停止方法,停止滚动 */ 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();// 刷新屏幕 } super.onDraw(canvas); } }
使用:
MarqueeTextView marqueeTextView = contentView.findViewById(R.id.five_text__view); marqueeTextView.initScrollTextView(getWindowManager(), "滚动文字", 1); marqueeTextView.setText(""); marqueeTextView.starScroll();
到此这篇关于Android实现文字滚动播放效果的代码的文章就介绍到这了,更多相关Android实现文字滚动播放 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
RecyclerView Adapter辅助类详解及示例代码
本文主要介绍RecyclerView Adapter辅助类的知识,这里整理了详细资料及简单示例代码,帮助大家学习这部分的内容,有兴趣的小伙伴可以参考下2016-09-09Android开发之Fragment懒加载的几种方式及性能对比
这篇文章主要介绍了Android开发之Fragment懒加载的几种方式及性能对比的相关资料,具体详细介绍需要的小伙伴可以参考下面文章内容2022-05-05Android RecyclerView使用GridLayoutManager间距设置的方法
本篇文章主要介绍了Android RecyclerView使用GridLayoutManager间距设置的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-12-12WebView的介绍与简单实现Android和H5互调的方法
这篇文章主要给大家介绍了关于WebView与简单实现Android和H5互调的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2018-05-05FloatingActionButton增强版一个按钮跳出多个按钮第三方开源之FloatingActionButton
这篇文章主要介绍了FloatingActionButton增强版一个按钮跳出多个按钮第三方开源之FloatingActionButton 的相关资料,需要的朋友可以参考下2015-12-12Android添加glide库报错Error: Failed to resolve: com.android.suppo
这篇文章主要给大家介绍了关于Android添加glide库报错Error: Failed to resolve: com.android.support:support-annotations:26.0.2的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。2017-11-11
最新评论