android-----------textview -------------滚动

转自:   http://blog.sina.com.cn/s/blog_821e2bb10100uoao.html



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

(2011-10-13 07:59:43)
转载
标签:

杂谈

分类:Android学习

 总结一下跑马灯的实现效果,网上比较流行的有两种,测试过了都可以实现文字滚动效果,建议使用第一种,因为可以更好地控制文字滚动速度、样式、字体等属性,第二种方法,还没有找到控制的方法!

 

 

第一种:

控件类:AutoScrollTextView继承了TextView并做了一些修改,实现了宽度的判断,文本自动滚动及开始和停止滚动等功能。

 

importandroid.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 implementsOnClickListener {
    public finalstatic String TAG = AutoScrollTextView.class.getSimpleName();
   
    privatefloat textLength = 0f;//文本长度
    privatefloat viewWidth = 0f;
    privatefloat step = 0f;//文字的横坐标
    privatefloat y = 0f;//文字的纵坐标
    privatefloat temp_view_plus_text_length = 0.0f;//用于计算的临时变量
    privatefloat temp_view_plus_two_text_length = 0.0f;//用于计算的临时变量
    publicboolean isStarting = false;//是否开始滚动
    privatePaint paint = null;//绘图样式
    privateString text = "";//文本内容

   
    publicAutoScrollTextView(Context context) {
       super(context);
       initView();
    }

   public AutoScrollTextView(Context context, AttributeSet attrs){
       super(context, attrs);
       initView();
    }

   public AutoScrollTextView(Context context, AttributeSet attrs, intdefStyle) {
       super(context, attrs, defStyle);
       initView();
    }
   
   
    private voidinitView()
    {
       setOnClickListener(this);
    }
   
   
    public voidinit(WindowManager windowManager)
    {
       paint = getPaint();
       text = getText().toString();
       textLength = paint.measureText(text);
       viewWidth = getWidth();
       if(viewWidth == 0)
       {
           if(windowManager != null)
           {
               Display display = windowManager.getDefaultDisplay();
               viewWidth = display.getWidth();
           }
       }
       step = textLength;
       temp_view_plus_text_length = viewWidth + textLength;
       temp_view_plus_two_text_length = viewWidth + textLength * 2;
       y = getTextSize() + getPaddingTop();
    }
   
   @Override
    publicParcelable onSaveInstanceState()
    {
       Parcelable superState = super.onSaveInstanceState();
       SavedState ss = new SavedState(superState);
       
       ss.step = step;
       ss.isStarting = isStarting;
       

你可能感兴趣的:(android-----------textview -------------滚动)