如何在android活动中绘制波形

时间:2016-03-29 05:06:59

标签: java android swing

我有绘制线的示例代码。我需要逐行绘制运行时间。但是现在我在执行后只显示了活动。但是,我需要开始活动并逐点展示我已经在java示例代码中完成此概念并附加检查它。

  

示例代码在这里

public class ImgDraw extends ActionBarActivity {

ImageView drawingImageView;
Handler mHandlerAnimation = null;
Runnable mRunnableAnimation = null;

Canvas canvas;
int startx = 0, starty = 0, endx = 0, endy = 0;
Paint paint;
Bitmap bitmap;
int width, height;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_imgdraw);

    drawingImageView = (ImageView) findViewById(R.id.DrawingImageView);

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    width = metrics.widthPixels;
    height = metrics.heightPixels;

    bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

    canvas = new Canvas(bitmap);
    drawingImageView.setImageBitmap(bitmap);

    // Line
    paint = new Paint();
    paint.setColor(Color.BLACK);
    paint.setStrokeWidth(3);
    startx = 50;
    starty = 90;
    endx = 550;
    endy = 90;
    //   canvas.drawLine(startx, starty, startx+1, endy, paint);


    ImgAnimation();


}

private void ImgAnimation() {

    mHandlerAnimation = new Handler();

    mRunnableAnimation = new Runnable() {
        public void run() {

            if (endx > startx) {
                canvas.drawLine(startx, starty, startx + 1, endy, paint);
                startx = startx + 1;
                getWindow().getDecorView().findViewById(android.R.id.content).invalidate();
            } else {
                bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
                canvas = new Canvas(bitmap);
                drawingImageView.setImageBitmap(bitmap);
                startx = 50;
             }

            mHandlerAnimation.postDelayed(this, 5);
        }
    };

    mHandlerAnimation.postDelayed(mRunnableAnimation, 5);

}}
  

此处需要输出格式   我在这里研究了java项目代码

public class AndroidTest extends JFrame {
static JPanel jp;
static Graphics g2d;
static int x=10;
public static void main(String[] args) {
    AndroidTest a = new AndroidTest();
    a.setSize(500,500);
    a.setLayout(null);
    a.setLocationRelativeTo(null);
    a.setDefaultCloseOperation(EXIT_ON_CLOSE);
    a.setVisible(true);

    jp = new JPanel();
    jp.setSize(450,100);
    jp.setLocation(10,100);
    jp.setBackground(Color.black);
    jp.setVisible(true);
    a.add(jp);

    g2d = jp.getGraphics();
    while(x<=450){
        try {
            Thread.sleep(10);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        for (int k = 0; k < 10; k++) {
            g2d.setColor(Color.black);
            g2d.drawLine(x+k, 0 , x + k,99);
        }
        g2d.setColor(Color.white);
        g2d.drawLine(x,50,x+1,50);
        x++;
        if (x == 446) {
            x=10;
        }
    }
}}
  

在java中运行此代码然后我在android活动中需要相同的输出

1 个答案:

答案 0 :(得分:1)

试试这个

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

public class LineView extends View {
    private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    private final Paint paint1 = new Paint(Paint.ANTI_ALIAS_FLAG);
    int x=0,j=0;

    public LineView(Context context) {
        super(context);
        init();
    }

    public LineView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public LineView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();

    }

    public void init()
    {
        paint.setColor(Color.BLACK);
        paint1.setColor(Color.WHITE);
    }

    @Override
    protected synchronized void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        canvas.drawLine(0,50,x+1,50,paint1);

        if (x > getWidth()-5) {
            canvas.drawRect(j, 0, j + 20, 50, paint);
            j+=4;
            if(j > getWidth()-5)
                j=0;
        }
        else
        {
            x+=4;
        }
        invalidate();
    }
}

xml是

<com.example.myapplication.LineView
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="#000"/>