自定义的跑马灯控件
16lz
2021-01-26
package com.home.view;import com.home.util.DataUtil;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.widget.TextView;/** * 自定义的跑马灯控件 * * @author fengjian * */public class MarqueeView extends TextView {/** 是否停止滚动 */private boolean mStop;private String mText;private float mCoordinateX;private float mTextWidth;public MarqueeView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}public MarqueeView(Context context, AttributeSet attrs) {super(context, attrs);}public MarqueeView(Context context) {super(context);}/** * 设置文本并启动跑马灯效果 * * @param text * 文本内容 */public void setText(String text) {this.mText = text;mTextWidth = getPaint().measureText(mText);if (mHandler.hasMessages(0))mHandler.removeMessages(0);mHandler.sendEmptyMessageDelayed(0, 2000);}/** * 停止跑马灯效果 */public void stop() {mStop = true;}@Overrideprotected void onAttachedToWindow() {mStop = false;if (!DataUtil.isEmpty(mText))mHandler.sendEmptyMessageDelayed(0, 2000);super.onAttachedToWindow();}@Overrideprotected void onDetachedFromWindow() {mStop = true;if (mHandler.hasMessages(0))mHandler.removeMessages(0);super.onDetachedFromWindow();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (!DataUtil.isEmpty(mText))canvas.drawText(mText, mCoordinateX, 15, getPaint());}@SuppressLint("HandlerLeak")private Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case 0:if (Math.abs(mCoordinateX) > (mTextWidth + 100)) {mCoordinateX = 0;invalidate();if (!mStop) {sendEmptyMessageDelayed(0, 2000);}} else {mCoordinateX -= 1;invalidate();if (!mStop) {sendEmptyMessageDelayed(0, 30);}}break;}super.handleMessage(msg);}};}
原文转自:农民伯伯: http://www.cnblogs.com/over140/p/3687952.html
更多相关文章
- 让Android的手机QQ崩溃未响应的指令---亲测有效果
- Android(安卓)ExpandableListView分组效果
- android 多行文本显示的textView
- 意见反馈 页面布局的设计
- Android(安卓)Material Design(7) 转场动画的使用
- Android实现控件动画效果
- android 读中文文本文件
- 回弹效果listview
- Android图片预览效果,支持缩放、平移切换