第二步:编写布局文件main.xml
- 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;
- public class MarqueeText extends TextView {
- /** 是否停止滚动 */
- private boolean mStopMarquee;
- private String mText;
- private float mCoordinateX;
- private float mTextWidth;
- public MarqueeText(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public void setText(String text) {
- this.mText = text;
- mTextWidth = getPaint().measureText(mText);
- if (mHandler.hasMessages(0))
- mHandler.removeMessages(0);
- mHandler.sendEmptyMessageDelayed(0, 2000);
- }
- @SuppressLint("NewApi")
- @Override
- protected void onAttachedToWindow() {
- mStopMarquee = false;
- if (!(mText == null || mText.isEmpty()))
- mHandler.sendEmptyMessageDelayed(0, 2000);
- super.onAttachedToWindow();
- }
- @Override
- protected void onDetachedFromWindow() {
- mStopMarquee = true;
- if (mHandler.hasMessages(0))
- mHandler.removeMessages(0);
- super.onDetachedFromWindow();
- }
- @SuppressLint("NewApi")
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- if (!(mText == null || mText.isEmpty()))
- canvas.drawText(mText, mCoordinateX, 30, getPaint());
- }
- @SuppressLint("HandlerLeak")
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case 0:
- if (Math.abs(mCoordinateX) > (mTextWidth + 5)) {
- mCoordinateX = 0;
- invalidate();
- if (!mStopMarquee) {
- sendEmptyMessageDelayed(0,500);
- }
- } else {
- mCoordinateX -= 1;
- invalidate();
- if (!mStopMarquee) {
- sendEmptyMessageDelayed(0, 30);
- }
- }
- break;
- }
- super.handleMessage(msg);
- }
- };
- }
- import java.io.IOException;
- import cn.superyouth.www.itools.MarqueeText;
- import android.annotation.SuppressLint;
- import android.app.Activity;
- import android.content.ComponentName;
- import android.content.Intent;
- import android.graphics.Color;
- import android.os.AsyncTask;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.text.method.ScrollingMovementMethod;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.AdapterView;
- import android.widget.GridView;
- import android.widget.TextView;
- import android.widget.Toast;
- import android.widget.AdapterView.OnItemClickListener;
- public class SYIT_Index extends Activity {
- MarqueeText autoScrollTextView;
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- autoScrollTextView = (MarqueeText) findViewById(R.id.textMsg);
- autoScrollTextView.setTextSize(30);
- autoScrollTextView.setTextColor(Color.BLUE);
- autoScrollTextView.setText("暂无任何预警信息!");
- // 点击预警提示信息
- autoScrollTextView.setOnClickListener(new OnClickListener() {
- public void onClick(View arg0) {
- // 进入预警信息页面
- Intent intent = new Intent(SYIT_Index.this, SYIT_Warning.class);
- startActivity(intent);
- }
- });
- }
- }
来源: http://www.phpxs.com/code/1002793/