嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
//绘图线程,实时获取temp 数值即是y值
public class DrawThread extends Thread {
public void run() {
// TODO Auto-generated method stub
drawBack(holder); //画出背景和坐标轴
if(task != null){
task.cancel();
}
task = new TimerTask() { //新建任务
@Override
public void run() {
if(paintflag==1){
//获取每一次实时的y坐标值
//以下绘制的是正弦波,若需要绘制接收到的数据请注释掉下面的cy[];
// int cy[]=new int[3];
// cy[0] = centerY -(int)(50 * Math.sin((cx -5) *2 * Math.PI/150));
// cy[1] = centerY -(int)(100 * Math.sin((cx -5) *2 * Math.PI/150));
// cy[2] = centerY -(int)(10 * Math.sin((cx -5) *2 * Math.PI/150));
int x = (int)(50 * Math.sin((cx -5) *10 * Math.PI/150));
int cy = 200 x; //实时获取的temp数值,因为对于画布来说
System.out.println("Temp:" x " cy:" cy);
//最左上角是原点,所以我要到y值,需要从画布中间开始计数
for(int i=0;i<1;i ){
Canvas canvas = holder.lockCanvas(new Rect(cx,cy-2,cx 2,cy 2));
//锁定画布,只对其中Rect(cx,cy-2,cx 2,cy 2)这块区域做改变,减小工程量
// if(i==0)
{ paint.setColor(Color.BLUE);//设置波形颜色
canvas.drawPoint(cx, cy, paint); //打点
}
// else if(i==1)
// { paint.setColor(Color.RED);
// canvas.drawPoint(cx, cy[i], paint); //打点
// }
// else if(i==2)
// { paint.setColor(Color.BLUE);
// canvas.drawPoint(cx, cy[i], paint); //打点
// }
holder.unlockCanvasAndPost(canvas); //解锁画布
}
cx ; //cx 自增, 就类似于随时间轴的图形
cx ; //间距自己设定
if(cx >=WIDTH){
cx=5; //如果画满则从头开始画
drawBack(holder); //画满之后,清除原来的图像,从新开始
}
}
}
};
timer.schedule(task, 0,1); //隔1ms被执行一次该循环任务画出图形
//简单一点就是1ms画出一个点,然后依次下去
}
}
//设置画布背景色,设置XY轴的位置
private void drawBack(SurfaceHolder holder){
Canvas canvas = holder.lockCanvas(); //锁定画布
//绘制白色背景
canvas.drawColor(Color.WHITE);
Paint p = new Paint();
p.setColor(Color.BLACK);
p.setStrokeWidth(2);
//绘制坐标轴
canvas.drawLine(X_OFFSET, HEIGHT, WIDTH, HEIGHT, p); //绘制X轴 前四个参数是起始坐标
canvas.drawLine(X_OFFSET, 20, X_OFFSET, HEIGHT, p); //绘制Y轴 前四个参数是起始坐标
holder.unlockCanvasAndPost(canvas); //结束锁定 显示在屏幕上
holder.lockCanvas(new Rect(0,0,0,0)); //锁定局部区域,其余地方不做改变
holder.unlockCanvasAndPost(canvas);
}