`
zhangziyangup
  • 浏览: 1075915 次
文章分类
社区版块
存档分类
最新评论

Android 文字自动滚动(跑马灯)效果的两种实现方法

 
阅读更多

<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>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics