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

更多相关文章

  1. 让Android的手机QQ崩溃未响应的指令---亲测有效果
  2. Android(安卓)ExpandableListView分组效果
  3. android 多行文本显示的textView
  4. 意见反馈 页面布局的设计
  5. Android(安卓)Material Design(7) 转场动画的使用
  6. Android实现控件动画效果
  7. android 读中文文本文件
  8. 回弹效果listview
  9. Android图片预览效果,支持缩放、平移切换

随机推荐

  1. Android(安卓)zxing change orientation
  2. Android中使用Gson解析JSON数据
  3. 录音11
  4. Android(安卓)SyncManager 实现
  5. [置顶] android orm映射框架(类似hibernat
  6. Android(安卓)Audio and Video
  7. 13-7-13如何修改android的title
  8. Android开机启动分析(一)logo的显示
  9. Android(安卓)Studio 修改 Logcat 颜色
  10. android源代码下载