用TextView 不就行了吗,用相对布局,画一条线,上面的加点文字来回跑

解决方案 »

  1.   

    定义一个圆点的位置:position,
    定义一个Handler,
    在onDraw()里,根据position的值画圆点,画完一次,发送一个delay的Message,在Handler里面接收这个Message,并且增加position的值,然后调用invalidate(),会触发调用onDraw()。这时候onDraw()里的position的值是已经增加的了,那你画圆点的时候,视觉上就是圆点向前动了一下。
    delay的值自己把握,小一点,圆点动的快一点,大一点,圆点动的慢一点
      

  2.   

    道理是一样的,
    比如说你这一秒画一个亮点,画完了,发一个delay Message,然后过一秒,Handler收到这个Message,调整一下位置,调用invalidate(),触发调用onDraw()。这时,画两个亮点。位置就是上面调整过后的。重新调用onDraw()后,是重新画一遍的,上一秒在onDraw()里画的东西是会被抹掉的。所以上面的效果就是,这一秒亮一个点,下一秒亮两个点,下一秒亮三个点
      

  3.   

    package com.test;import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Paint.Style;
    import android.graphics.Rect;
    import android.os.Bundle;
    import android.view.View;public class DrawActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); MyView mv = new MyView(this);
    setContentView(mv);
    } public class MyView extends View {
    private int p; MyView(final Context context) {
    super(context);
    new Thread(new Runnable() { @Override
    public void run() {
    // TODO Auto-generated method stub
    while (true) {
    if(p>500){
    p=0;
    }
    p += 20;
    try {
    Thread.sleep(300);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    Activity a = (Activity) context;
    a.runOnUiThread(new Runnable() { @Override
    public void run() {
    // TODO Auto-generated method stub
    MyView.this.invalidate();
    }
    });
    } }
    }).start();
    } @Override
    protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas); // 首先定义一个paint
    Paint paint = new Paint();
    // 绘制矩形区域-实心矩形
    // 设置颜色
    paint.setColor(Color.BLUE);
    // 设置样式-填充
    paint.setStyle(Style.FILL);
    // 绘制一个矩形
    canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);
    // 绘空心矩形
    // 设置颜色
    paint.setColor(Color.RED);
    // 设置样式-空心矩形
    paint.setStyle(Style.STROKE);
    // 绘制一个矩形
    canvas.drawRect(new Rect(10, 10, 100, 30), paint);
    // 绘文字
    // 设置颜色
    paint.setColor(Color.GREEN);
    // 绘文字
    canvas.drawText("Hello", 10, 50, paint);
    // 绘图
    // 从资源文件中生成位图
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
    // 绘图
    canvas.drawBitmap(bitmap, 10 + p, 60, paint);
    } }
    }
      

  4.   

    package com.test;import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Paint.Style;
    import android.graphics.Rect;
    import android.os.Bundle;
    import android.view.View;public class DrawActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); MyView mv = new MyView(this);
    setContentView(mv);
    } public class MyView extends View {
    private int p;
    private int bw, bh;
    private Rect r; MyView(final Context context) {
    super(context);
    new Thread(new Runnable() { @Override
    public void run() {
    // TODO Auto-generated method stub
    while (true) {
    if (p > 500) {
    p = 0;
    }
    p += 60;
    try {
    Thread.sleep(300);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    Activity a = (Activity) context;
    a.runOnUiThread(new Runnable() { @Override
    public void run() {
    // TODO Auto-generated method stub
    MyView.this.invalidate(r);
    }
    });
    } }
    }).start();
    } @Override
    protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas); // 首先定义一个paint
    Paint paint = new Paint();
    // 绘制矩形区域-实心矩形
    // 设置颜色
    paint.setColor(Color.BLUE);
    // 设置样式-填充
    paint.setStyle(Style.FILL);
    // 绘制一个矩形
    canvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);
    // 绘空心矩形
    // 设置颜色
    paint.setColor(Color.RED);
    // 设置样式-空心矩形
    paint.setStyle(Style.STROKE);
    // 绘制一个矩形
    canvas.drawRect(new Rect(10, 10, 100, 30), paint);
    // 绘文字
    // 设置颜色
    paint.setColor(Color.GREEN);
    // 绘文字
    canvas.drawText("Hello", 10, 50, paint);
    // 绘图
    // 从资源文件中生成位图
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
    // 绘图
    bw = bitmap.getWidth();
    bh = bitmap.getHeight();
    r = new Rect(p + 60, 00, p + 60 + bw, 500);
    canvas.drawBitmap(bitmap, p, 60, paint);
    } }
    }或者你要的是这种效果