Android自定义View模拟并实现3D柱状图
发布日期:2021-06-29 11:46:16
浏览次数:2
分类:技术文章
本文共 1945 字,大约阅读时间需要 6 分钟。
先看效果图
呈上代码:
- 自定义View类
public class MyBarView extends View { private Paint barPaint; //柱状图画笔 private Paint shadowPaint; //阴影画笔 private int xOffset=1,yOffset=1; //x和y方向的偏移量 private int startX=100,startY=400,endX=200,endY=1000; private int layerNum=25; //画布的层数 private int barMargin=50; //每个柱状体之前的间隔 private Listpercents=new ArrayList<>(); //每种数据的数值,用于计算比例,画出柱状体高度 private int perSum; //每种数据数值的总和 public MyBarView(Context context,int... pers){ super(context); for(int i=0;i =1;j--){ //从后往前画 canvas.drawRect(startX+xOffset*j,nowStartY-yOffset*j,endX+xOffset*j,endY-yOffset*j,barPaint); if(j==1||j==layerNum) //画阴影 canvas.drawRect(startX+xOffset*j,nowStartY-yOffset*j,endX+xOffset*j,endY-yOffset*j,shadowPaint); } int length=endX-startX; //矩形边长 startX+=length+barMargin; //计算下一个柱状体的左上角x点的值 endX+=length+barMargin; //计算下一个柱状体的右下角x点的值 } } private void init(){ //初始化控件 barPaint=new Paint(); barPaint.setStyle(Paint.Style.FILL); barPaint.setColor(Color.RED); shadowPaint=new Paint(); shadowPaint.setStyle(Paint.Style.STROKE); shadowPaint.setStrokeWidth(1); shadowPaint.setColor(Color.parseColor("#515151")); }}
- MainActivity中创建该View
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ MyBarView myBarView=new MyBarView(this,10,20,30,50,60,80); ((FrameLayout)(findViewById(R.id.frame))).addView(myBarView); }}
- 最后是布局文件
转载地址:https://blog.csdn.net/zz51233273/article/details/107235215 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月03日 05时15分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
JAVA笔记(十一)面向对象--多态
2019-04-29
webpack打包错误:Invalid configuration object. Webpack has been initialised using a configuration object
2019-04-29
TypeError: this.getOptions is not a function
2019-04-29
el-table 二维数组合并行
2019-04-29
js获取当月的天数
2019-04-29
多个相邻的盒子外边框合并的问题
2019-04-29
js实现复制功能
2019-04-29
UR5e机械臂运行一直阻塞在waitForServer
2019-04-29
ROS把pkg1下的某个头文件和源文件生成动态链接库供pkg2调用
2019-04-29
使用urdf_tutorial快速可视化urdf文件
2019-04-29
SQl 数据完整性(随堂博客)
2019-04-29
左连接、右连接、内连接
2019-04-29
MySQL DQL语句基础(随堂博客)
2019-04-29
MySQL基础练习
2019-04-29
利用MySQL进行数据复杂查询(1)
2019-04-29
利用MySQL进行数据复杂查询(2)
2019-04-29
MySQL 表与表之间的关系
2019-04-29
Python数据处理
2019-04-29
Java练习题(面向对象)
2019-04-29