Android自带的跑马灯效果不太好控制,不能控制速度,不能即时停止和启动,而且还受焦点的影响蛋疼不已。由于项目需求需要用的可控制性高的跑马灯效果,所以自己写了一个自定义的TextView

注意:在布局文件引用本view时,paddingLeft,paddingRigh都必须为0dp,需要增加这两个属性的,大家可以自行修改代码。

android:ellipsize="marquee" android:singleLine="true" 这两个属性也要加上

public class MarqueeText extends TextView implements Runnable {

private int currentScrollX;// 当前滚动的位置

private boolean isStop = false;

private int textWidth;

private boolean isMeasure = false;

public MarqueeText(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

public MarqueeText(Context context, AttributeSet attrs) {

super(context, attrs);

}

public MarqueeText(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

if (!isMeasure) {// 文字宽度只需获取一次就可以了

getTextWidth();

isMeasure = true;

}

}

/**

* 获取文字宽度

*/

private void getTextWidth() {

Paint paint = this.getPaint();

String str = this.getText().toString();

textWidth = (int) paint.measureText(str);

}

@Override

public void run() {

currentScrollX -= 2;// 滚动速度

scrollTo(currentScrollX, 0);

if (isStop) {

return;

}

if (getScrollX() <= -(this.getWidth())) {

scrollTo(textWidth, 0);

currentScrollX = textWidth;

// return;

}

postDelayed(this, 5);

}

// 开始滚动

public void startScroll() {

isStop = false;

this.removeCallbacks(this);

post(this);

}

// 停止滚动

public void stopScroll() {

isStop = true;

}

// 从头开始滚动

public void startFor0() {

currentScrollX = 0;

startScroll();

}

}

布局文件:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/start"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="start"

android:text="走起" />

android:id="@+id/stop"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="stop"

android:text="停止" />

android:id="@+id/startfor0"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="startFor0"

android:text="从头开始" />

android:id="@+id/test"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="#339320"

android:ellipsize="marquee"

android:singleLine="true"

android:text="这才是真正的文字跑马灯效果这才是真正的字跑马灯效果这才是真正的"

android:textColor="#000000"

android:textSize="20dp" >

MainActivity

public class MainActivity extends Activity {

private MarqueeText test;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

test = (MarqueeText) this.findViewById(R.id.test);

}

public void start(View v) {

test.startScroll();

}

public void stop(View v) {

test.stopScroll();

}

public void startFor0(View v){

test.startFor0();

}

}

android 跑马灯速度,自定义TextView跑马灯效果可控制启动/停止/速度/焦点相关推荐

  1. Android尺子布局和自定义TextView

    Android尺子布局和自定义TextView 下面是具体实现: 新建项目:在UI中 <LinearLayout xmlns:android="http://schemas.andro ...

  2. Android流光动画,android开发自定义TextView文本流光效果——滑动解锁

    由于项目需求,需要做一个app锁屏页,其中就有一个需要滑动解锁的文字流光效果.我这里通过自定义Textview来实现: @Override protected void onLayout(boolea ...

  3. Android 自定义控件起步:自定义TextView

    转载至:http://blog.csdn.net/lmj623565791/article/details/24252901 不过对原作进行了相关细节优化,所以才有此文.. 首先我们看一下我们要达到的 ...

  4. Android实现雪花特效自定义view

    一.前言 这个冬天,老家一直没有下雨, 正好圣诞节,就想着制作一个下雪的特效. 圣诞祝福:平安夜,舞翩阡.雪花飘,飞满天.心与心,永相伴. 圣诞节是传统的宗教节日,对于基 督徒,那是庆祝耶稣的诞生,纪 ...

  5. Android TextView跑马灯效果与设置文字阴影

    TextView跑马灯效果的实现 自定义 一个TextView public class MusicDesText extends TextView {public MusicDesText(Cont ...

  6. 【Android】不依赖焦点和选中的TextView跑马灯

    前言 继承TextView,并仿照源码修改而来,主要是取消了焦点和选中了判断,也不依赖文本的宽度. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民 ...

  7. Android TextView跑马灯不动 及属性

    <TextView android:text="每一个视图的绘制过程都必须经历三个最主要的阶段,即onMeasure().onLayout()和onDraw(),"andro ...

  8. TextView跑马灯效果

    转载:http://www.2cto.com/kf/201409/330658.html 一.只想让TextView显示一行,但是文字超过TextView的长度怎么办? 在开头显示省略号 androi ...

  9. c语言avr单片机跑马灯程序,AVR单片机跑马灯的仿真设计

    /******************************************************************** 汇诚科技 ************************* ...

  10. html 自动滚动通知,Marquee标签实现跑马灯、滚动公告、通知效果

    1.Marquee基本语法 - 啦啦啦,我会移动耶! 2.文字移动属性 (1)方向 :direction=# #=left, right,up,down 例: 啦啦啦,我从右向左移! 啦啦,我从左向右 ...

最新文章

  1. 遍历Repeater与ItemDataBound事件发现的几个问题。
  2. Go语言 defer
  3. 偏差-方差权衡的理解
  4. 【es6】谈谈Promise
  5. angular 拦截器
  6. 常见缓存算法和LRU与LFU的c++实现
  7. Python3打印当前系统时间
  8. oracle 10g 关库,Oracle Db10g 启动和关闭数据库
  9. 赫夫曼树编码的算法及应用习题--数据结构
  10. Exploit开发系列教程-Mona 2 SEH
  11. RHEL6上课笔记之background_process_command
  12. 解决新版DBUtils使用连接池from DBUtils.PooledDB import PooledDB报错
  13. 特斯拉2020年第三季度共生产14.5万辆汽车 交付约14万辆
  14. asp.net控件开发技巧(2)关闭基类不必要的功能
  15. php变量存储过程,php - 从存储过程调用返回的变量作为用于可变的输出值 - SO中文参考 - www.soinside.com...
  16. 计算机操作系统发展史
  17. python 爬虫 一键爬取携程旅游团数据
  18. mac web服务器 修改默认,mac如何修改默认播放器-mac修改默认播放器的方法 - 河东软件园...
  19. Excel插件快捷键弹窗事件(VSTO+键盘钩子实现)
  20. 专访 | Draven:像写代码一样,用树形的结构写文章

热门文章

  1. 有道无术,术可求;有术无道,止于术
  2. 用了很多群控与云控,最后微信还是慢慢的死掉了
  3. 关于测量物体空间位置的装置
  4. C语言上机复习(一)文件操作
  5. 七代处理器装win7_Intel7代处理器 win10重装win7后无法安装显卡声卡驱动的解决方案 | A小可私人狗窝...
  6. excel快速便捷批量填充
  7. python 拆分pdf
  8. Matlab/simulink 2018a利用 powergui 进行FFT分析(傅里叶分析谐波)
  9. 使用PowerGUI管理你的VMware ESX
  10. 滴滴天使投资人的25条创业建议