使用canvas画曲线
来源:互联网 发布:试卷编排软件 编辑:程序博客网 时间:2024/05/09 23:53
Draw类
package com.example.drawtestone;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;public class Draw extends View{//line paintPaint paint = new Paint();//x y axis paintPaint paintPoint = new Paint();//path paintPaint paintPath = new Paint();//x y axis unitprivate float xUnit,yUnit;//x y axis startprivate float xStart,yStart;//x y end startprivate float xEnd,yEnd;public Draw(Context context) {super(context);}public Draw(Context context,AttributeSet attrs) {super(context,attrs);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);canvas.drawColor(Color.WHITE);paint.setColor(Color.BLUE);paintPoint.setColor(Color.RED);paintPath.setColor(Color.BLACK);paintPath.setStyle(Paint.Style.STROKE);Path path = new Path();path.moveTo(100, 100);path.quadTo(500, 300, 300, 400);path.quadTo(200, 400, 500, 600);canvas.drawPath(path, paintPath);xUnit = 50;yUnit = 50;xStart = 40;yStart = 0;xEnd = 500;yEnd = 1000;//y axis drawcanvas.drawLine(xStart, yStart, xStart, yEnd, paint);//x axis drawdrawXAxis(canvas,xStart ,xEnd ,yStart ,yEnd ,yUnit);//draw axis textdrawYText(canvas,paintPoint);drawXText(canvas,paintPoint);}/** * get before data * @param c Calendar object * @param num want to get the number of days * @return ArrayLsit of days */public ArrayList<String> getBeforDay(Calendar c,int num){ArrayList<String> dataArr = new ArrayList<String>();while(num >= 0){int month = c.get(Calendar.MONTH)+1;int day = c.get(Calendar.DATE);String data = month + "/" + day;dataArr.add(data);//set before dayc.set(Calendar.DATE, day-1);num--;}return dataArr;}/** * draw x axis text * @param canvas * @param paintPoint */public void drawXText(Canvas canvas,Paint paintPoint){Calendar c = Calendar.getInstance();ArrayList<String> dataArr = getBeforDay(c, 7);int dataIndex = dataArr.size()-1;int x = 30;while(x <= 450 && dataIndex >= 0){canvas.drawText(dataArr.get(dataIndex), x, 1020, paintPoint);x += xUnit;dataIndex--;}}/** * draw y axis text * @param canvas * @param paintPoint */public void drawYText(Canvas canvas,Paint paintPoint){float yText = 50.0f;int y = 0;//save one decimal pointDecimalFormat df = new DecimalFormat("##0.0");String text = df.format(yText);while(y <= 1000){canvas.drawText(text + "", 0, 1000-y, paintPoint);y += yUnit;yText += 0.1f;text = df.format(yText);}}/** * draw every x axis * @param canvas * @param xStart * @param xEnd * @param yStart * @param yEnd * @param yUnit */public void drawXAxis(Canvas canvas ,float xStart ,float xEnd ,float yStart ,float yEnd ,float yUnit){do{canvas.drawLine(xStart, yStart, xEnd, yStart, paint);yStart += yUnit;}while(yStart <= yEnd);}public String getTime(){Date date = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd");String time = dateFormat.format(date);return time;}}layout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/linearlayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.drawtestone.MainActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="draw" /> <com.example.drawtestone.Draw android:id="@+id/draw1" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>Main
package com.example.drawtestone;import android.app.Activity;import android.os.Bundle;import android.widget.LinearLayout;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);LinearLayout linearlayout = (LinearLayout)findViewById(R.id.linearlayout);Draw draw = new Draw(this);draw.setMinimumHeight(10000);draw.setMinimumWidth(10000);//draw.setScaleX(10.0f);//draw.setScaleY(10.0f);}}
0 0
- 使用canvas画曲线
- canvas画水平曲线走势图
- HTML5开发实例-使用canvas绘制曲线
- canvas里画曲线之quadraticCurveTo方法
- 基于canvas使用贝塞尔曲线平滑拟合折线段
- canvas 贝萨尔曲线
- canvas 曲线 弧线
- Canvas绘制贝塞尔曲线
- Canvas绘制曲线
- CANVAS 贝塞尔曲线
- canvas动态曲线
- Canvas曲线绘制
- Canvas贝塞尔曲线
- Canvas绘图接口(曲线)
- canvas画贝塞尔曲线(bezierCurveTo)
- 使用GDI+画曲线
- 自定义View——canvas画曲线图表
- html5 Canvas画图6:画曲线之arcTo
- URI和URLConnection类的区别
- Linux 设备文件的创建和mdev
- hive一些思考
- EGL, GLX/WGL/AGL 和GL之间的关系
- kernel build & preempt-rt patch & xenomai
- 使用canvas画曲线
- IOS入门学习笔记(普通UI控件--UIButton)
- 19、find 命令的参数详解
- 常见的NoSQL数据库
- 重定位的难点剖析
- Android 转换UTC时间:2013-06-13T14:15:44.000的时间格式 为GMT时间
- Java并发编程:Lock
- 关于Mysql数据库中date()格式化
- Android中屏幕密度和图片大小的关系分析