android曲线图

本文介绍了一个使用Java和Android绘制数据图表的方法。通过自定义View并利用Canvas进行绘图,实现了两个数据集的数据线和对应的坐标轴。同时展示了如何设置画笔样式、颜色以及抗锯齿效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这只是JAVA文件,其他文件根据此文件自己完善。

 

package com.example.android.home;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;

public class Figure extends Activity{
@Override
public void onCreate (Bundle savedInstanceState){
   super.onCreate(savedInstanceState);
   MyView myView=new MyView(this);
   setContentView(myView);
  
}
public class MyView extends View{
   public MyView(Context context)
   {
    super(context);
   }
   @Override
   protected void onDraw(Canvas canvas){
    super.onDraw(canvas);//重写onDraw方法
   
    int data[]={265481,335842,125466,256856,352151,254611,356584};
   
    int data1[]={324225,144578,352415,458125,268451,351545,252145};

    canvas.drawColor(Color.WHITE);//设置背景颜色
    Paint paint= new Paint();
    paint.setStyle(Paint.Style.STROKE);
    paint.setAntiAlias(true);//去锯齿
    paint.setColor(Color.BLUE);//颜色
   
    Paint paint1=new Paint();
    paint1.setStyle(Paint.Style.STROKE);
    paint1.setAntiAlias(true);//去锯齿
    paint1.setColor(Color.DKGRAY);
  
       //数据 线
     int n=1,m=0,x=0;
     int nn=1,mm=0,xx=0;
     int[] y=new int[100];
     y[0]=120;
    
     for(int x1=0;x1<data.length;x1++)
     {
      y[n]=120-data[m]*20/100000;
      x=x+30;
      int x2=x+30;
            canvas.drawLine(x, y[x1], x2, y[n], paint);
            canvas.drawCircle(x2, y[n], 2, paint);
            n=n+1;
            m=m+1;
           
           
     }
    
     for(int x1=0;x1<data1.length;x1++)
     {
      y[nn]=120-data1[mm]*20/100000;
      xx=xx+30;
      int x2=xx+30;
            canvas.drawLine(xx, y[x1], x2, y[nn], paint1);
            canvas.drawCircle(x2, y[nn], 2, paint1);
            nn=nn+1;
            mm=mm+1;
     }
    
    //设置Y轴
    canvas.drawLine(30, 10, 30, 120, paint);
    canvas.drawLine(30, 20, 35, 20, paint);
    canvas.drawLine(30, 40, 35, 40, paint);
    canvas.drawLine(30, 60, 35, 60, paint);
    canvas.drawLine(30, 80, 35, 80, paint);
    canvas.drawLine(30, 100, 35, 100, paint);

    //设置X轴
    canvas.drawLine(30,120,300,120,paint);
    canvas.drawLine(60, 120, 60, 115, paint);
    canvas.drawLine(90, 120, 90, 115, paint);
    canvas.drawLine(120, 120, 120, 115, paint);
    canvas.drawLine(150, 120, 150, 115, paint);
    canvas.drawLine(180, 120, 180, 115, paint);
    canvas.drawLine(210, 120, 210, 115, paint);
    canvas.drawLine(240, 120, 240, 115, paint);
    canvas.drawLine(270, 120, 270, 115, paint);
    //设置Y轴文字
    paint.setTextSize(7);
    canvas.drawText(getResources().getString(R.string.str_text1), 5, 100, paint);
    canvas.drawText(getResources().getString(R.string.str_text2), 5, 80, paint);
    canvas.drawText(getResources().getString(R.string.str_text3), 5, 60, paint);
    canvas.drawText(getResources().getString(R.string.str_text4), 5, 40, paint);
    canvas.drawText(getResources().getString(R.string.str_text5), 5, 20, paint);
    canvas.drawText(getResources().getString(R.string.str_text6), 5, 0, paint);
   
   
    //设置X轴文字
    canvas.drawText(getResources().getString(R.string.str_text01), 50, 130, paint);
    canvas.drawText(getResources().getString(R.string.str_text02), 80, 130, paint);
    canvas.drawText(getResources().getString(R.string.str_text03), 120, 130, paint);
    canvas.drawText(getResources().getString(R.string.str_text04), 150, 130, paint);
    canvas.drawText(getResources().getString(R.string.str_text05), 180, 130, paint);
    canvas.drawText(getResources().getString(R.string.str_text06), 210, 130, paint);
    canvas.drawText(getResources().getString(R.string.str_text07), 240, 130, paint);
    canvas.drawText(getResources().getString(R.string.str_text08), 270, 130, paint);

   }
}
}

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值