Android中如何通过自定义view实现动态柱状图
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容主要讲解"Android中如何通过自定义view实现动态柱状图",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android中如何通过自定义view
千家信息网最后更新 2026年11月02日Android中如何通过自定义view实现动态柱状图
本篇内容主要讲解"Android中如何通过自定义view实现动态柱状图",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android中如何通过自定义view实现动态柱状图"吧!
自定义view
public class Histogram extends View { int MAX = 100;//矩形显示的最大值 int corner = 0; //矩形的角度。 设置为0 则没有角度。 double data = 0.0;//显示的数 double tempData = 0; //初始数据 int textPadding = 50; //字体与矩形图的距离 Paint mPaint; int mColor; Context mContext; //构造函数 public Histogram(Context context) { super(context); mContext = context; } public Histogram(Context context, @Nullable AttributeSet attrs) { super(context, attrs); mContext = context; initPaint(); } public Histogram(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mContext = context; initPaint(); } //画笔方法 private void initPaint() { mPaint = new Paint(); mPaint.setAntiAlias(true); mColor = mContext.getResources().getColor(R.color.gary); mPaint.setColor(mColor); } @Override public void draw(Canvas canvas) { super.draw(canvas); if (data == 0.0) { mPaint.setTextSize(getWidth() / 2); RectF oval3 = new RectF(0, getHeight() - DensityUtils.pxTodip(mContext, 20), getWidth(), getHeight());// 设置个新的长方形 canvas.drawRoundRect(oval3, DensityUtils.pxTodip(mContext, corner), DensityUtils.pxTodip(mContext, corner), mPaint); canvas.drawText("0", getWidth() * 0.5f - mPaint.measureText("0") * 0.5f, getHeight() - DensityUtils.pxTodip(mContext, 20) - 2 * DensityUtils.pxTodip(mContext, textPadding), mPaint); return; } //防止数值很大的的时候,动画时间过长 int step = (int) (data / 100 + 1.0); if (tempData < data - step) { tempData = tempData + step; } else { tempData = data; } //画圆角矩形 String S = tempData + ""; //如果数字后面需要加% 则在""中添加% //设置显示的字体 Typeface typeface = Typeface.createFromAsset(getContext().getAssets(),"digital-7.ttf"); mPaint.setTypeface(typeface);// //一个字和两,三个字的字号相同 if (S.length() < 4) { mPaint.setTextSize(getWidth()/2 ); } else { mPaint.setTextSize(50); //可以通过getWidth()/2 改变字体大小 也可以通过设置数字来改变自己想要的字体大小 当超出矩形图宽度时不能显示全部 }// float textH = mPaint.ascent() + mPaint.descent(); float MaxH = getHeight() - textH - 2 * DensityUtils.pxTodip(mContext, textPadding);// //圆角矩形的实际高度 float realH = (float) (MaxH / MAX * tempData); RectF oval3 = new RectF(0, getHeight() - realH, getWidth(), getHeight());// 设置个新的长方形 canvas.drawRoundRect(oval3, DensityUtils.pxTodip(mContext, corner), DensityUtils.pxTodip(mContext, corner), mPaint); //写数字 canvas.drawText(S, getWidth() * 0.5f - mPaint.measureText(S) * 0.5f, getHeight() - realH - 2 * DensityUtils.pxTodip(mContext, textPadding), mPaint); if (tempData != data) { postInvalidate(); } } public void setData(double data, int MAX) { this.data = data; this.MAX = MAX; postInvalidate(); } public int getmColor() { return mColor; } public void setmColor(int mColor) { this.mColor = mColor; }}布局
MainActivity调用initAllViews()方法
private void initAllViews() { column_one = (Histogram) findViewById(R.id.column_one); column_two = (Histogram) findViewById(R.id.column_two); column_three = (Histogram) findViewById(R.id.column_three); column_one.setData( 20.22, 100); column_two.setData(30.2, 100); column_three.setData(40, 100); column_one.mPaint.setColor(getResources().getColor(R.color.colorAccent)); //改变柱状图的颜色 }到此,相信大家对"Android中如何通过自定义view实现动态柱状图"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
矩形
柱状
字体
动态
数字
方法
内容
可以通过
圆角
大小
实际
角度
长方形
学习
实用
很大
更深
最大
相同
三个
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花魁咖啡
互联网金融科技
互联网科技网
银优互联网科技有限公司
互联网金融科技平台
火传媒上海互联网科技
互联网科技论坛
互联网养老 桔豆科技
佩信高科技互联网
须眉科技是互联网公司吗
移动互联网科技股
互联网金融科技展
企晟互联网信息科技有限公司
互联网企业科技类企业如何做账
互联网领先科技宣传片
互联网科技股为什么大涨
广州有谷有贝互联网科技有限公司
容联科技互联网电商
安徽零酒互联网科技有限公司
盐城市攀科互联网科技有限公司
广州大一互联网络科技有限公司
互联网科技未来
互联网科技小额贷款
狮子座互联网科技培训
互联网科技有哪些公司
互联网科技公司营业执照怎么办理
中和天地互联网科技有限公司
互联网相关科技技术
互联网科技融合创新
卡尔迅互联网科技有限公司