import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
public class TextMarqueeViewextends androidx.appcompat.widget.AppCompatTextView {
public boolean mIsFloating =false; //是否开始滚动
private float mSpeed =0.5f;
private float mStep =0f;
private String mStr =""; //文本内容
private float mTextLength =0f; //文本长度
private float mY =0f; //文字的纵坐标
public TextMarqueeView(Context context) {
super(context);
}
public TextMarqueeView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TextMarqueeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void init(String str, float speed) {
setText(str);
mSpeed = speed;
mStr = getText().toString();
mTextLength = getPaint().measureText(mStr);
mY = getTextSize() + getPaddingTop();
getPaint().setColor(0xff0000ff);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawText(mStr, 0, mStr.length(), 0 -mStep, mY, getPaint());
if (!mIsFloating)
return;
if(mStep ==0){
mStep +=mSpeed;
postInvalidateDelayed(2000);
}else if(mStep >mTextLength - getMeasuredWidth()){
mStep =0;
postInvalidateDelayed(2000);
}else {
mStep +=mSpeed;
invalidate();
}
}
public void startFloating() {
mIsFloating =true;
invalidate();
}
public void stopFloating() {
mIsFloating =false;
invalidate();
}
}
Android TextView跑马灯,仿澎湃新闻
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一.自定义Textview 设置Textview isFocuse为True 代码如下: public class...
- 效果地址 http://v.youku.com/v_show/id_XMzAwMTMxMTEzNg==.html?...
- 首先给TextView添加一个单行限制:android:singleLine="true" - 解决方案一更改Te...