可以一直滚动的跑马灯

 1 public class AutoScrollTextView extends TextView implements Runnable {
 2     private int currentScrollX;// 当前滚动的位置
 3     private boolean isStop = false;
 4     private int textWidth;
 5     private boolean isMeasure = false;
 6
 7     public AutoScrollTextView(Context context) {
 8         super(context);
 9     }
10
11     public AutoScrollTextView(Context context, AttributeSet attrs) {
12         super(context, attrs);
13     }
14
15     public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) {
16         super(context, attrs, defStyle);
17     }
18
19     @Override
20     protected void onDraw(Canvas canvas) {
21         super.onDraw(canvas);
22         if (!isMeasure) {// 文字宽度只需获取一次就可以了
23             getTextWidth();
24             isMeasure = true;
25         }
26     }
27
28     /**
29      * 获取文字宽度
30      */
31     private void getTextWidth() {
32         Paint paint = this.getPaint();
33         String str = this.getText().toString();
34         textWidth = (int) paint.measureText(str);
35     }
36
37     @Override
38     public void run() {
39         currentScrollX -= 1;// 滚动速度
40         scrollTo(currentScrollX, 0);
41         if (isStop) {
42             return;
43         }
44         if (getScrollX() <= -(this.getWidth())) {
45             scrollTo(textWidth, 0);
46             currentScrollX = textWidth;
47         }
48         postDelayed(this, 5);
49     }
50
51     // 开始滚动
52     public void startScroll() {
53         isStop = false;
54         this.removeCallbacks(this);
55         post(this);
56     }
57
58     // 停止滚动
59     public void stopScroll() {
60         isStop = true;
61     }
62
63     // 从头开始滚动
64     public void startFor0() {
65         currentScrollX = 0;
66         startScroll();
67     }
68 }
时间: 2024-11-07 21:57:33

可以一直滚动的跑马灯的相关文章

Android TextView 横向滚动(跑马灯效果)

Android TextView 中当文字比较多时希望它横向滚动显示,下面是一种亲测可行的方法. 效果图: 1.自定义TextView,重写isFocused()方法返回true,让自定义TextView一直处于获取焦点状态. package com.example.shen.marqueedemo; import android.content.Context; import android.util.AttributeSet; import android.widget.TextView;

Android 文字自动滚动(跑马灯)效果的两种实现方法[特别好使]

有时候在xml中写的跑马灯效果不滚动:原因有以下 Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize=”marquee” 2.TextView必须单行显示,即内容必须超出TextView大小 3.TextView要获得焦点才能滚动(如果还不行,就要用自定义的TextView控件中重写isFocused()返回true就行[方法代码在下面的AlwaysMarqueeTextView 类],但是遇到新问题就是界面有多个这样的控件显示时当

vue制作滚动条幅-跑马灯效果实例代码

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="js/vue.js" type="text/javascript" charset="utf-8"></script> </head> <body>

Android文字跑马灯控件(文本自动滚动控件)

最近在开发一个应用,需要用到文本的跑马灯效果,图省事,在网上找,但老半天都找不到,后来自己写了一个,很简单,代码如下: import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; impor

IOS跑马灯效果,实现文字水平无间断滚动

ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UIViewController{ 4 NSTimer *timer; 5 UIScrollView *scrollViewText; 6 } 7 8 @property (nonatomic ,strong) NSArray *arrData; 9 10 11 @end ViewController.m 1 // 2 // ViewContro

Android开发:TextView真正可控、不需要焦点的水平滚动--这才是真正的跑马灯

网上的TextView做跑马灯,大多都是要用到焦点,而且字数要超出滚动区域宽度才能实现滚动,使用起来十分不方便. 这里实现一种真正可控的滚动 (1)不需要焦点 (2)任意字数 (3)滚动从滚动区域右边出来,在左边消失,再从右边出来. 上代码 1.布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.androi

android 自定义文字跑马灯 支持拖拽,按住停止滚动,自定义速度

android的textview自带跑马灯效果,一般使用足够了.不过也有不一般的情况,所以我实现了一个自定义textview控件,用来针对这种不一般情况下的跑马灯效果实现. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Android:TextView 自动滚动(跑马灯) (转)

Android:TextView 自动滚动(跑马灯) TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true" 2.设置可滚到,或显示样式:android:ellipsize="marquee" 3.TextView只有在获取焦点后才会滚动显示隐藏文字,因此需要在包中新建一个类,继承TextView.重写isFocused方法,这个方法默认行为是,如果TextView获得焦点,方法返回true,失

Android之如何用TextView实现滚动字幕的效果【跑马灯】

TextView 实现滚动字幕效果[跑马灯效果]: android:ellipsize="marquee"//可滚动,star(头部),middle(中部),end(尾部) 超出显示不下的内容用...代替, 实现条件 1.必须设置为单行显示,且TextView中的内容超过它的容纳范围, 2.TextView本身没有焦点,必须设置成可获取焦点 <TextView android:layout_width="100dp" android:layout_height