<wbr>本文章转载自别人:<a href="http://blog.sina.com.cn/s/blog_821e2bb10100uoao.html">http://blog.sina.com.cn/s/blog_821e2bb10100uoao.html</a></wbr>
总结一下跑马灯的实现效果,网上比较流行的有两种,测试过了都可以实现文字滚动效果,建议使用第一种,因为可以更好地控制文字滚动速度、样式、字体等属性,第二种方法,还没有找到控制的方法!
<wbr></wbr>
<wbr></wbr>
第一种:
控件类:AutoScrollTextView 继承了TextView并做了一些修改,实现了宽度的判断,文本自动滚动及开始和停止滚动等功能。
<wbr></wbr>
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.TextView;
public class AutoScrollTextView extends TextView implements OnClickListener {
<wbr><wbr><wbr>public final static String TAG = AutoScrollTextView.class.getSimpleName();<br><wbr><wbr><wbr><br><wbr><wbr><wbr>private float textLength = 0f;//文本长度<br><wbr><wbr><wbr>private float viewWidth = 0f;<br><wbr><wbr><wbr>private float step = 0f;//文字的横坐标<br><wbr><wbr><wbr>private float y = 0f;//文字的纵坐标<br><wbr><wbr><wbr>private float temp_view_plus_text_length = 0.0f;//用于计算的临时变量<br><wbr><wbr><wbr>private float temp_view_plus_two_text_length = 0.0f;//用于计算的临时变量<br><wbr><wbr><wbr>public boolean isStarting = false;//是否开始滚动<br><wbr><wbr><wbr>private Paint paint = null;//绘图样式<br><wbr><wbr><wbr>private String text = "";//文本内容</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr><br><wbr><wbr><wbr>public AutoScrollTextView(Context context) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>super(context);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>initView();<br><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>public AutoScrollTextView(Context context, AttributeSet attrs) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>super(context, attrs);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>initView();<br><wbr><wbr><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr><wbr>public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>super(context, attrs, defStyle);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>initView();<br><wbr><wbr><wbr>}<br><wbr><wbr><wbr><br><wbr><wbr><wbr><br><wbr><wbr><wbr>private void initView()<br><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>setOnClickListener(this);<br><wbr><wbr><wbr>}<br><wbr><wbr><wbr><br><wbr><wbr><wbr><br><wbr><wbr><wbr>public void init(WindowManager windowManager)<br><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>paint = getPaint();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>text = getText().toString();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>textLength = paint.measureText(text);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>viewWidth = getWidth();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>if(viewWidth == 0)<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>if(windowManager != null)<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Display display = windowManager.getDefaultDisplay();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>viewWidth = display.getWidth();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>step = textLength;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>temp_view_plus_text_length = viewWidth + textLength;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>temp_view_plus_two_text_length = viewWidth + textLength * 2;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>y = getTextSize() + getPaddingTop();<br><wbr><wbr><wbr>}<br><wbr><wbr><wbr><br><wbr><wbr><wbr>@Override<br><wbr><wbr><wbr>public Parcelable onSaveInstanceState()<br><wbr><wbr><wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Parcelable superState = super.onSaveInstanceState();<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>SavedState ss = new SavedState(superState);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ss.step = step;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>ss.isStarting = isStarting;<br><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
分享到:
相关推荐
跑文字上下、左右滚动跑马灯效果,欢迎指正
RecyclerView上下自动无限滚动,跑马灯效果,具体效果有2种, 1.每次移动距离是一个item的高度 2.持续向上移动
jQuery无缝滚动跑马灯效果 jQuery无缝滚动跑马灯效果 jQuery无缝滚动跑马灯效果 jQuery无缝滚动跑马灯效果 jQuery无缝滚动跑马灯效果
VerticalMarqueeView - 新闻向上不断滚动跑马灯效果
Android文字跑马灯效果,TextView的文字跑马灯效果
Android 文字跑马灯和上下翻滚效果
Android 文字跑马灯文字水平自动滚动控件及效果演示,文字左右移动特效,文字滚动速度可调、文本颜色也可以自定义,可以用手触屏来控制是否停止文字滚动,控制点击停止或者继续运行,在开始滚动前,对文字样式做以下...
完美实现android 滚动字幕(跑马灯效果),简单实用
文字可以自己滚动,无缝衔接的文字跑马灯效果。没毛病!
分享一个Android中实现跑马灯效果
本代码,实现TextView的文字滚动播放效果,跑马灯特效,构成简约实用,感觉好点赞
博文地址:https://blog.csdn.net/jaynm/article/details/106624287
实现跑马灯上下滚动效果,marquee标签被摒弃后不使用js实现的跑马灯效果保险些
DMScrollingTicker-master.zip 文字滚动效果
Android跑马灯实现的三种方式
多种方式实现多种效果的自定义跑马灯效果,完整项目,注释详尽,自由度高,包括垂直滚动和水平滚动
RecyclerView实现垂直自动无限滚动,类似于中奖信息,跑马灯-JAVA版实现 提供一种思路,实现的方法可根据自己的需求进行修改
Vue实现跑马灯样式文字横向滚动 本文实例为大家分享了Vue实现跑马灯样式文字横向滚动的具体代码,供大家参考,具体内容如下 需求: 在Vue项目的顶部,来实现文字左右滚动 步骤: 1、可以自己封装一个组件,也可以...
使用 vue 绑定style属性实现文字跑马灯效果。。。。。。。
duilib原生库,派生Lable控件,C++实现文字跑马灯 滚动显示的效果。 派生出来的lable控件,具有以下功能: 1. 基类 Lable的所有基本功能 2. 当设置的文字不为空时,自动跑马灯 滚动显示文字,显示速度由外部 xml ...