自定义view 圆柱
来源:互联网 发布:灵界基友网络剧 编辑:程序博客网 时间:2024/06/04 08:42
package com.example.cll.zidingyiview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;import java.util.Arrays;import java.util.List;/** * Created by cll on 2017/12/20. */public class Zhuxing extends View{ private String[] xData={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; private String[] yData={"100","200","300","400","500","600","700","800","900","1000"}; private List<Integer> list= Arrays.asList(300,200,460,120,730,920,80); private int margin=20; private int marginX=30; private int marginY=30; private int pointX; private int pointY; private int scaleX; private int scaleY; private Paint paintXY; private Paint paintRect; private Paint paintValue; public Zhuxing(Context context) { this(context,null); } public Zhuxing(Context context, @Nullable AttributeSet attrs) { this(context, attrs,0); } public Zhuxing(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public void initView(String[] xData,String[] yData,List<Integer> list){ this.xData = xData; this.yData = yData; this.list = list; } private void init(){ pointX=margin+marginX; pointY=getHeight()-(margin+marginY); scaleX=(getWidth()-2*margin-marginX)/xData.length; scaleY=(getHeight()-2*margin-marginY)/yData.length; paintXY=new Paint(); paintXY.setStyle(Paint.Style.STROKE); paintXY.setAntiAlias(true); paintXY.setDither(true); paintXY.setColor(Color.BLACK); paintXY.setStrokeWidth(3); paintRect=new Paint(); paintRect.setStyle(Paint.Style.STROKE); paintRect.setDither(true); paintRect.setAntiAlias(true); paintRect.setColor(Color.BLACK); paintRect.setTextSize(15); paintValue=new Paint(); paintValue.setStyle(Paint.Style.FILL); paintValue.setDither(true); paintValue.setAntiAlias(true); paintValue.setStrokeWidth(1); } @Override protected void onDraw(Canvas canvas) { init(); canvas.drawLine(pointX,pointY,getWidth()-margin,pointY,paintXY); canvas.drawLine(pointX,pointY,pointX,margin,paintXY); for (int i=1;i<xData.length;i++){ int height=pointY-margin; float single = height / Integer.valueOf(yData[yData.length - 1]); int marginLeft = pointX + scaleX * i; // 单位 canvas.drawText(xData[i-1],marginLeft - 53,pointY+25,paintValue); // 柱状图 RectF rectF = new RectF(marginLeft - 50,height - (list.get(i-1) * single),marginLeft - 10,pointY); canvas.drawRect(rectF,paintRect); canvas.drawText(list.get(i-1)+"",marginLeft - 43,height - (list.get(i-1) * single) - 10,paintValue); canvas.drawText(xData[i-1],marginLeft-53,pointY+25,paintValue); } for (int i=1;i<yData.length;i++){ int marginTop = scaleY * i; canvas.drawText(yData[i-1],pointX,pointY-marginTop,paintValue); } }}
阅读全文
0 0
- 自定义view 圆柱
- 圆柱
- 自定义view
- 自定义View
- 自定义view
- 自定义View
- 自定义View
- 自定义view
- 自定义View
- 自定义view
- 自定义view
- 自定义View
- 自定义View
- 自定义view
- 自定义view
- 自定义view
- 自定义view
- 自定义view
- MIME规范—MIME类型大全
- 无人豆浆机?九阳,请开始你的表演
- 浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)
- executeQuery和execute区别
- mybatis 中的mapper接口问题
- 自定义view 圆柱
- BigDecimal.setScale()
- 【D3】D3 使用教程(1)-数据
- springmvc 406错误
- 破解VBA密码
- 依赖及权限
- [Git痛点讲解 : 不断完善中]
- 堆排序-乡巴老都能懂
- 使用vue-cli打包过程中的步骤以及问题