目录
主界面,界面xml代码:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.example.tb.MybingtuView
android:layout_width="164dp"
android:layout_height="152dp"
android:layout_x="21dp"
android:layout_y="129dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.example.tb.MyZheXianTuView
android:layout_width="489dp"
android:layout_height="293dp"
android:layout_x="-10dp"
android:layout_y="41dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.example.tb.MyzhuxingView
android:layout_width="489dp"
android:layout_height="293dp"
android:layout_x="307dp"
android:layout_y="86dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</AbsoluteLayout>
一.饼图:MybingtuView
package com.example.tb; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; /** * Created by FJFZ on 2022/11/20. */ public class MybingtuView extends View { public MybingtuView(Context context, AttributeSet atts) { super(context,atts); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int x=100,y=100,w=200,h=200; int r=w/2; float jd1=60,jd2=90,jd3=210; //定义角度 //转化成弧度 float hd1=(float)3.14 / 180 *jd1 /2; float hd2=(float)3.14 / 180 *(jd1+jd2 /2); float hd3=(float)3.14 / 180 *(jd1+jd2+jd3 /2); Paint paint=new Paint(); RectF rect=new RectF(x,y,x+w,y+h); paint.setColor(Color.RED); //画圆弧 canvas.drawArc(rect,0,jd1,true,paint); paint.setColor(Color.GRAY); //写角度 canvas.drawText(jd1+"",(float)(x+r+Math.cos(hd1) * (r/4 *3 )),(float)(x+r+Math.sin(hd1) * (r/4 * 3) ),paint); paint.setColor(Color.BLACK); canvas.drawArc(rect,jd1,jd2,true,paint); paint.setColor(Color.GRAY); canvas.drawText(jd2+"",(float)(x+r+Math.cos(hd2) * (r/4 *3 )),(float)(x+r+Math.sin(hd2) * (r/4 * 3) ),paint); paint.setColor(Color.GREEN); canvas.drawArc(rect,jd1+jd2,jd3,true,paint); paint.setColor(Color.GRAY); canvas.drawText(jd3+"",(float)(x+r+Math.cos(hd3) * (r/4 *3 )),(float)(x+r+Math.sin(hd3) * (r/4 * 3) ),paint); } }
二.柱状图代码:MyzhuxingView
package com.example.tb; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; import java.util.ArrayList; import java.util.List; /** * Created by FJFZ on 2022/11/20. */ public class MyzhuxingView extends View { public MyzhuxingView(Context context, AttributeSet atts) { super(context,atts); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint=new Paint(); paint.setColor(Color.BLACK); paint.setTextSize(21); List<Float>list=new ArrayList<>(); list.add(Float.parseFloat("100")); list.add(Float.parseFloat("200")); list.add(Float.parseFloat("300")); list.add(Float.parseFloat("400")); int x=500,y=500,w=600,h=400; canvas.drawLine(x,y,x+w,y,paint); canvas.drawLine(x,y,x,y-h,paint); canvas.drawLine(x+w-15,y+20,x+w,y,paint); canvas.drawLine(x+w-15,y-20,x+w,y,paint); canvas.drawLine(x+15,y-h+20,x,y-h,paint); canvas.drawLine(x-15,y-h+20,x,y-h,paint); int xw=w/6; for (int i=1;i<5;i++){ canvas.drawLine(x+xw*i, y, x+xw*i, y-15, paint); canvas.drawText(i+"", x+xw*i -10, y+25, paint); } int yh=h/4; for ( int i=1;i<5;i++) { canvas.drawLine(x,y-yh*i-15,x,y-yh*i,paint); canvas.drawLine(x,y-yh*i,x+w,y-yh*i,paint); canvas.drawText(i+"",x-35,y-yh*i,paint); } paint.setColor(Color.RED); int zhuw=30; if (list.size() > 0) { for (int i=1;i<list.size()+1;i++) { canvas.drawRect(x+xw*i-zhuw/2,y-list.get(i-1),x+xw*i+zhuw/2,y,paint ); //画柱状 canvas.drawText(list.get(i-1)+"" ,x+xw*i-zhuw/2,y-list.get(i-1)-5,paint); } } } }
三.折线图代码:MyZheXianTuView.java
package com.example.tb; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; import java.util.ArrayList; import java.util.List; /** * Created by FJFZ on 2022/11/21. */ public class MyZheXianTuView extends View { public MyZheXianTuView(Context context, AttributeSet atts) { super(context,atts); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int x=600,y=600,w=600,h=400,maxy=400; List<Float> list=new ArrayList<>(); list.add(Float.parseFloat("100")); list.add(Float.parseFloat("200")); list.add(Float.parseFloat("300")); list.add(Float.parseFloat("400")); Paint paint=new Paint(); paint.setColor(Color.RED); paint.setTextSize(21); canvas.drawLine(x,y,x+w,y,paint);//x轴 canvas.drawLine(x,y,x,y-h,paint);//y轴 canvas.drawLine(x+w-15,y+15,x+w,y,paint); canvas.drawLine(x+w-15,y-15,x+w,y,paint); canvas.drawLine(x+15,y-h+15,x,y-h,paint); canvas.drawLine(x-15,y-h+15,x,y-h,paint); int yh=h/4; for (int i=1;i<5;i++) { canvas.drawLine(x+15,y-yh*i,x,y-yh*i,paint); canvas.drawText(i+"",x+25,y-yh*i,paint); } int xw=w/list.size(); for (int i=1;i<list.size()+1;i++) { canvas.drawLine(x+xw*i,y-15,x+xw*i,y,paint); canvas.drawText(list.get(list.size()-i)+"",x+xw*i,y-35,paint); } int p1;int p2; for (int i=1;i<list.size();i++) { p1=list.size()-i; p2 =list.size()-i-1; canvas.drawLine(x+xw*i,y-list.get(p1) /2,x+xw*(i+1),y-list.get(p2) /2 * (maxy /h) ,paint); canvas.drawText(list.get(p1) +"" ,x+xw*i,y-list.get(p1) /2 *(maxy /h),paint); canvas.drawText(list.get(p2) +"",x+xw*(i+1),y-list.get(p2) /2 * (maxy/h),paint ); } } }
Developed by 福州机电工程职业技术学校 wh
邮箱联系方式:xiaohui032901@foxmail.com
qq联系方式:2151335401、3135144152