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...