




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
android TextView 垂直自动滚动2011-12-06 19:34:00 我来说两句 收藏 我要投稿 字体:小 大 在做android 应用的开发的时候,横向滚动或者要做出跑马灯的效果很简单,textview本身的属性就支持,只要设置准确就会滚动,开发起来比较简单,但是textview 不支持垂直滚动,那么垂直滚动就需要自己来实现了,很多网友提供的垂直滚 动方案都是千篇一律,使用ScrollView来进行滚动,但是都不完美,做起来有些别扭有一位网友给出的歌词的滚动思路明确,能从根本上解决问题,因此我实现的这个滚动是在这位网友的基础上实现,封装了一个View,view继承自TextView先看看实现的效果:实现图中效果的关键点是:1重写onDrow方法,计算每次的滚动的距离2计算view的Y轴的重点,让当前显示的处于高亮显示状态3定时的刷新View使其界面不断的刷先,出现滚动的效果4实现数据结构,将数据传给view下面看看主要代码:1创建一个类继承TextView/* author xushilin* 垂直滚动的TextView Widget*/public class VerticalScrollTextView extends TextView2实现构造函数: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(); Notice sen=new Notice(0,暂时没有通知公告); list.add(0, sen); /普通文字的字号,以及画笔颜色的设置 mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setTextSize(16); mPaint.setColor(Color.BLACK); mPaint.setTypeface(Typeface.SERIF); /高亮文字的字号,以及画笔颜色的设置 mPathPaint = new Paint(); mPathPaint.setAntiAlias(true); mPathPaint.setColor(Color.RED); mPathPaint.setTextSize(16); mPathPaint.setTypeface(Typeface.SANS_SERIF); 3从写onDraw方法,并计算文字的行距,并且将将普通文字和高亮文字,在这个方法中绘制出来protected void onDraw(Canvas canvas) super.onDraw(canvas); canvas.drawColor(0xEFeffff); Paint p = mPaint; Paint p2 = mPathPaint; p.setTextAlign(Paint.Align.CENTER); if (index = -1) return; p2.setTextAlign(Paint.Align.CENTER); 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 mY) break; canvas.drawText(list.get(i).getName(), mX, tempY, p); 4计算Y轴中值以及更新索引protected void onSizeChanged(int w, int h, int ow, int oh) super.onSizeChanged(w, h, ow, oh); mX = w * 0.5f; mY = h; middleY = h * 0.5f; private long updateIndex(int index) if (index = -1) return -1; this.index=index; return index; 5定时更新view,并将接口暴露给客户程序调用public void updateUI() new Thread(new updateThread().start(); class updateThread implements Runnable long time = 1000; 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; catch (InterruptedException e) e.printStackTrace(); Handler mHandler = new Handler(); Runnable mUpdateResults = new Runnable() public void run() invalidate(); ;6xml布局文件中调用: 7java代码中调用,传递数据:package com.demo.xsl.text;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.os.Handler;public class VerticalScrollTextActivity extends Activity SampleView mSampleView; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); mSampleView = (SampleView) findViewById(R.id.sampleView1); List lst=new ArrayList(); for(int i=0;i30;i+) if(i%2=0) Sentence sen=new Sentence(i,i+金球奖三甲揭晓C罗
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《GB 30982-2014建筑胶粘剂有害物质限量》
- 《大学物理实验1》课程简介与教学大纲
- 《英语口语》课程介绍与教学大纲
- 老年人消费理念课件
- 酿酒酿造车间知识培训课件
- 控制和协调原理
- 统编版高三历史二轮复习专练:辽夏金元的统治(解析版)
- 实验:探究加速度与物体受力、物体质量的关系(复习讲义)-2026年高考物理一轮复习(北京专用)原卷版
- 第八节 第3课时 题型上(一) 圆锥曲线中的范围、最值、证明问题2026年高三数学第一轮总复习
- 天津市红桥区2024-2025学年八年级下学期期末道德与法治试题(含答案)
- 口腔科消毒管理制度
- 供养中心考试题及答案
- 医学影像技术发展介绍
- 货币互换协议书
- DB65╱T 3953-2016 反恐怖防范设置规范 商业场所
- 航运企业船员安全培训及宣传制度
- 《医学文献检索技巧》课件
- 2024年贵州省瓮安县事业单位公开招聘教师岗笔试题带答案
- 高校教师命题能力培养机制研究
- 2025-2030再生胶产业规划专项研究报告
- GB/T 37507-2025项目、项目群和项目组合管理项目管理指南
评论
0/150
提交评论