实例介绍
【实例截图】
【核心代码】
//绘图线程,实时获取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);
}
标签: 曲线图
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论