自定义TextView

public class VerticalScrollTextView extends TextView {    private Paint mPaint;    private float mX;    private Paint mPathPaint;       public int index = 0;    private List list;    public float mTouchHistoryY;    private int mY;     private float middleY;//    private static final int DY = 40; //    public VerticalScrollTextView(Context context) {        super(context);        init();    }    public VerticalScrollTextView(Context context, AttributeSet attr) {        super(context, attr);        init();    }    public VerticalScrollTextView(Context context, AttributeSet attr, int i) {        super(context, attr, i);        init();    }    private void init() {        setFocusable(true);        if(list==null){            list=new ArrayList();            Sentence sen=new Sentence(0,"  ");            list.add(0, sen);        }               //         mPaint = new Paint();        mPaint.setAntiAlias(true);        mPaint.setTextSize(24);        mPaint.setColor(Color.BLACK);        mPaint.setAlpha(80);        mPaint.setTypeface(Typeface.SERIF);        //         mPathPaint = new Paint();        mPathPaint.setAntiAlias(true);        mPathPaint.setColor(Color.RED);        mPathPaint.setTextSize(24);        mPathPaint.setTypeface(Typeface.SANS_SERIF);    }    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawColor(0xEFeffff);        Paint p = mPaint;        Paint p2 = mPathPaint;        p.setTextAlign(Paint.Align.LEFT);        if (index == -1)            return;        p2.setTextAlign(Paint.Align.LEFT);        //         canvas.drawText(list.get(index).getName(), mX, middleY, p2);        float tempY = middleY;        //         for (int i = index - 1; i >= 0; i--) {                      tempY = tempY - DY;            if (tempY < 0) {                break;            }            canvas.drawText(list.get(i).getName(), mX, tempY, p);                   }        tempY = middleY;        //        for (int i = index + 1; i < list.size(); i++) {            //             tempY = tempY + DY;            if (tempY > mY) {                break;            }            canvas.drawText(list.get(i).getName(), mX, tempY, p);                   }    }    protected void onSizeChanged(int w, int h, int ow, int oh) {        super.onSizeChanged(w, h, ow, oh);        mX = w * 0.3f;         mY = h;        middleY = h * 0.5f;    }    public long updateIndex(int index) {            if (index == -1)            return -1;        this.index=index;               return index;    }    public List getList() {        return list;    }    public void setList(List list) {        this.list = list;    }    public void updateUI(){        new Thread(new updateThread()).start();    }    class updateThread implements Runnable {        long time = 300;         int i=0;        public void run() {            while (true) {                long sleeptime = updateIndex(i);                time += sleeptime;                mHandler.post(mUpdateResults);                if (sleeptime == -1)                    return;                try {                    Thread.sleep(time);                    i++;                    if(i==getList().size())                        {                           i=0;                           time = 300;                        }                } catch (InterruptedException e) {                                      e.printStackTrace();                }            }        }    }    Handler mHandler = new Handler();    Runnable mUpdateResults = new Runnable() {        public void run() {            invalidate(); //         }    };}

数据封装类

public class Sentence {    private String name;    private int index;    public Sentence(int index,String name){        this.name=name;        this.index=index;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getIndex() {        return index;    }    public void setIndex(int index) {        this.index = index;    }}

布局

<com.mypackager.ui.VerticalScrollTextView          android:id="@+id/scoll_textView"          android:layout_width="500dp"          android:layout_height="500dp"          android:text="@string/company_intrduce_text"          android:visibility="gone"          >com.mypackager.VerticalScrollTextView>

Activity代码

List lst=new ArrayList();            for(int i=0;i<8;i++){                if(i%2==0){                    Sentence sen=new Sentence(i,i+1+"NanJINGXIXI");                    lst.add(i, sen);                }else{                    Sentence sen=new Sentence(i,i+1+"Hello world!");                    lst.add(i, sen);                }            }               play_textView.setList(lst);            play_textView.updateUI();   

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. Android(安卓)apps应用检查更新代码
  4. android代码实现ScaleAnimation动画(附原码)
  5. android TabLayout的应用
  6. Android(安卓)下拉刷新 ListRefresh 从网络加载图片
  7. android中colors.xml中用到的主要颜色的代码。
  8. Android(安卓)Http网络数据传输备忘
  9. android手机端保存xml数据

随机推荐

  1. Android中Activity启动模式详解,可以控制
  2. android适配各种分辨率的问题
  3. Android(安卓)热敏打印机开发(蓝牙)
  4. [Android]解决Window系统adb shell后中文
  5. Eclipse ADT 中自动提示的方法参数都是ar
  6. 基于Android搭建tensorflow lite,实现官
  7. Android系统的性能调优参数介绍
  8. UI开发中所用到特殊方法
  9. 【Android(安卓)UI设计与开发】第02期:引
  10. 主线程(UI线程)