• 自定义View类

    RectView.java
package com.qf.sxy.day29_customview.widget;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View; /**
* Created by sxy on 2016/9/29.
*/
public class RectView extends View { private Paint mPaint; //设置条形图的 间距和宽度
private int rectSpace = 50;
private int rectWith = 50;
//必须是所有的柱状图高度的最大公约数以下的约数 否则余数高度无法画出
private int times = 50;//设置走多少次
private int current = 0;//当前走的次数 //数据 条状态图的高度 颜色
private int[][]rectArray ={{500,Color.YELLOW},{200,Color.RED},{350,Color.BLACK},{250,Color.GREEN}}; public RectView(Context context, AttributeSet attrs) {
super(context, attrs);
//初始化画笔对象
initPaint();
} private void initPaint() {
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setColor(Color.BLACK);
mPaint.setStrokeWidth(3);
} public RectView(Context context) {
this(context,null);
} /**
* 绘制 条形统计图
* @param canvas
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas); //画坐标点
canvas.drawCircle(50,getHeight()-50,2,mPaint); //画x轴
canvas.drawLine(50,getHeight()-50,getWidth()-50,getHeight()-50,mPaint); //画Y轴
canvas.drawLine(50,getHeight()-50,50,50,mPaint); //画Y轴箭头
canvas.drawLine(50,50,25,75,mPaint);
canvas.drawLine(50,50,75,75,mPaint); //绘制条形图 n 条
for(int i=0;i<rectArray.length;i++){ //条形图 左边
int left = rectSpace +(rectSpace+rectWith)*i;
//获取顶部位置
int top = rectArray[i][0]/times*current;
//重新设置颜色
mPaint.setColor(rectArray[i][1]);
//绘制条形图
canvas.drawRect(left+50,getHeight()-top-50,left+50+rectWith,getHeight()-50,mPaint); }
// 效果让其柱状图慢慢上升
current++;
if(current<times){
invalidate();//刷新
} }
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.qf.sxy.day29_customview.MainActivity"> <com.qf.sxy.day29_customview.widget.RectView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>

28 自定义View画坐标和柱状图的更多相关文章

  1. Android自定义View 画弧形,文字,并增加动画效果

    一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类   B ...

  2. 28自定义View 模仿联系人字母侧栏

    自定义View LetterView.java package com.qf.sxy.customview02; import android.content.Context; import andr ...

  3. Android 自定义View 画圆 画线

    自定义一个DrawCircle继承View 实现构造方法: public DrawCircle(Context context) { super(context); this.mContext = c ...

  4. 自定义view 画圆

    package com.exaple.day01rikao; import android.content.Context; import android.graphics.Canvas; impor ...

  5. 28 自定义View流式布局

    流式布局每行的行高以本行中最高的元素作为高,如果一个元素放不下到一行时直接到第二行 FlowLayoutView package com.qf.sxy.customview05.widget; imp ...

  6. 28 自定义View侧滑栏

    ScrollMenuView.java package com.qf.sxy.customview03.widget; import android.content.Context; import a ...

  7. 自定义View画一条线

    #import "PublishContextView.h" @implementation PublishContextView -(void)drawRect:(CGRect) ...

  8. 自定义View,随着手指运动的小球

    这个实例是自定的view的初步介绍,要设计的是一个随着手指运动的小球.原理是随时获取手指的坐标,然后在这个坐标上面实时改变自定义view的坐标.这个view仅仅是画了一个圆形而已. 自定义的view ...

  9. 【朝花夕拾】Android自定义View篇之(二)Canvas常用功能

    前言 转在请申明,转自[https://www.cnblogs.com/andy-songwei/p/10960012.html],谢谢! 上一篇讲View的绘制流程中讲到过,最后一步是draw流程, ...

随机推荐

  1. jquery checkbox勾选/取消勾选checked属性不生效问题

    http://www.cnblogs.com/KeenLeung/p/3799895.html

  2. [LeetCode] Subarray Sum Equals K 子数组和为K

    Given an array of integers and an integer k, you need to find the total number of continuous subarra ...

  3. 用js来实现那些数据结构08(链表02-双向链表)

    其实无论在任何语言中,一种数据结构往往会有很多的延伸和变种以应对不同场景的需要.其实前面我们所学过的栈和队列也是可以用链表来实现的.有兴趣的小伙伴可以自己尝试着去实现以下. 有点跑题了...,我们还是 ...

  4. Docker(六):Docker 三剑客之 Docker Swarm

    实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行.然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容器集群系统,我们该如何选择 ...

  5. [SDOI 2016]征途

    Description 题库链接 将一个长度为 \(n\) 的正整数序列分为 \(m\) 段,问你这 \(m\) 段最小的方差 \(v\) 为多少.输出 \(v\times m^2\) . \(1\l ...

  6. [USACO 13NOV]No Change

    Description Farmer John is at the market to purchase supplies for his farm. He has in his pocket K c ...

  7. 【USACO】 录制唱片

    题目描述 贝西想从奶牛摇滚乐队的 N 首歌里挑出一些录制一套专辑.专辑分 K 张唱片,每张唱片可容纳总长为 C 分钟的歌曲.第 i 首歌的长度为 T i 分钟,录制唱片时,唱片之间的歌曲需要保持原本的 ...

  8. NOIP 2014

    Prob.1 生活大爆炸版 石头剪刀布 模拟.代码: #include<cstdio> #include<cstring> #include<iostream> u ...

  9. 2017-9-19 c语言预备作业

    题目一: (1)我对邹欣老师博客内容的看法 针对邹欣老师的第一种看法,也就是文中所谈的春蚕与园丁的例子.我认为在大学之前的阶段,师生关系可以如此比喻,因为在中学阶段教师与学生的关系,更多地是一个知识的 ...

  10. 索引法则--少用OR,它在连接时会索引失效

    Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...