Android开发自定义实时图表控件实现示例

目录
  • 概述
  • 演示
  • 环境
  • 实现
    • 第一步:新建项目RealTimeChartDemo
    • 第二步:新建RealTimeChart类
    • 第三步:添加自定义变量
    • 第四步:初始化基础参数
    • 第五步:初始化宽高等参数
    • 第六步:定义添加坐标点方法
    • 第七步:定义坐标偏移方法
    • 第八步:定义绘制网格线方法
    • 第九步:定义绘制X轴标签方法
    • 第十步:定义绘制坐标点方法
    • 第十一步:绘制
    • 第十二步:在activity_main.xml中使用控件
    • 第十三步:在MainActivity中模拟添加数据点

概述

有时我们需要实时滚动显示一段时间的数据,使用一些图表框架可能不够灵活,不能满足定制化的需求,所以自定义一个控件,使我们可以为所欲为。

演示

环境

开发工具:Android Studio

开发语言:Kotlin

实现

第一步:新建项目RealTimeChartDemo

第二步:新建RealTimeChart类

这个类便是要自定义的控件,需要继承自View类。

此类中需要重写 onSizeChanged 和 onDraw方法。

第三步:添加自定义变量

首先需要有控件的宽度和高度

然后需要把要绘制的点在此控件范围内,所以需要有转换系数

然后为了显示X轴和Y轴的一些标签,需要有边界的大小

然后为了绘制坐标点,需要有坐标的集合,绘制线(Path)

然后需要有个中标签,线等等的颜色,样式,宽度等等Paint

需要定义一个Point的类

第四步:初始化基础参数

初始化Paint的各种参数

第五步:初始化宽高等参数

第六步:定义添加坐标点方法

第七步:定义坐标偏移方法

由于左上下都留出了显示标签的位置,所以在实际绘制时需要进行一定的偏移

第八步:定义绘制网格线方法

在绘制网格显示,顺便将Y轴标签一起绘制

第九步:定义绘制X轴标签方法

第十步:定义绘制坐标点方法

每次有新点时都重新绘制图表,达到动态滚动的效果

第十一步:绘制

在onDraw方法中,添加绘制辅助线和绘制坐标点方法

第十二步:在activity_main.xml中使用控件

第十三步:在MainActivity中模拟添加数据点

恭喜,现在已经实现了实时图表控件,更多关于Android自定义实时图表控件的资料请关注我们其它相关文章!

(0)

相关推荐

  • Android自定义模拟时钟控件

    本文实例为大家分享了Android自定义模拟时钟控件的具体代码,供大家参考,具体内容如下 自定义view—透明模拟时钟显示 项目中要用到模拟时钟的显示,查了一些资料根据自己的需要进行了自定义view 思路:重写view,1.根据控件的宽高进行获取模拟时钟的半径大小.2.重写onDraw方法,将画布进行不同角度的旋转进行绘制表盘 圆心 刻度 指针 这里就直接上代码了 自定义的TimeClockView: package com.eq.viewdemo; import android.content

  • android自定义控件实现简易时间轴(2)

    这篇做了一个简单的时间轴控件.右侧的数据就是一个简单的字符串.问题还是有的,当右侧的文字长度不一样的时候就会有问题了.现在可以修改一下适配右侧的文字. 效果如下: 代码: private Paint bgPaint, linePaint, borderPaint,textPaint; private Rect bgRect, textRect; //基本属性 private int mTextSize; private int mTextColor; private String mTextTi

  • Android自定义实现日历控件

    本文实例为大家分享了Android自定义实现日历控件的具体代码,供大家参考,具体内容如下 1. Calendar类 2. 布局 创建calendar_layout.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:padding="20sp" android:orientation="vertical" android:l

  • Android自定义控件实现简单滑动开关效果

    本文实例为大家分享了Android自定义控件实现简单滑动开关的具体代码,供大家参考,具体内容如下 ToggleButton 滑动开关 项目概述 滑动开关是一个纯粹的自定义控件,上面的按钮会随着我们的左右滑动而滑动,并且在状态改变时通知用户,效果如下图1-9 所示,这也是应用中设置某些状态信息时最常见的控件,因此,我们有必要学习关于如何 自定义一个这样的滑动开关. 滑动开关UI 布局文件为activity_main.xml,代码如下:res/layout/activity_main.xml <Re

  • Android实现一个倒计时自定义控件

    目录 (一)前言 (二)效果展示 (三)实现思路 (三)代码地址 总结 (一)前言 Android 其实提供了一个倒计时控件叫做CountDownTimer,这个倒计时控件用起来也很简单,但是要按照我们想要的倒计时样式去做就比较繁琐了.比如说我们希望倒计时按照我们想要的样式展示HH:MM:SS或者是HH-MM-SS等样式,或者希望如下展示: 要做的工作就会比较繁琐了,不是说不能实现,只是实现起来代价比较大,所以如果我们将其做成一个自定义的view,可以根据用户传进来的样式去做倒计时样式的展示(注

  • Android表格自定义控件使用详解

    近期公司要做报表功能,在网上搜索下表格的样式后便自己写了一个自定义的表格控件,该表格控件能根据设置的数据中数据的最大值自动设置左侧信息栏显示的值,使得条形图能尽量的充满控件,条形图部分支持左右滑动,数据的长度可能超过控件本身所能容纳的长度,所以在绘制的时候做了判断,当需要绘制的部分不再控件范围内则不进行绘制,具体请阅读代码,目前只支持一个名称对应一条数据,如有不足之处,大家提出帮忙修改 使用方法如下: 在xml文件中定义控件属性 <RelativeLayout     xmlns:android

  • Android开发自定义实时图表控件实现示例

    目录 概述 演示 环境 实现 第一步:新建项目RealTimeChartDemo 第二步:新建RealTimeChart类 第三步:添加自定义变量 第四步:初始化基础参数 第五步:初始化宽高等参数 第六步:定义添加坐标点方法 第七步:定义坐标偏移方法 第八步:定义绘制网格线方法 第九步:定义绘制X轴标签方法 第十步:定义绘制坐标点方法 第十一步:绘制 第十二步:在activity_main.xml中使用控件 第十三步:在MainActivity中模拟添加数据点 概述 有时我们需要实时滚动显示一段

  • android开发教程之switch控件使用示例

    复制代码 代码如下: <Switchandroid:id="@+id/open"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textOff="蓝牙关闭中"android:textOn="蓝牙开启中" /> 复制代码 代码如下: open.setOnCheckedChangeListe

  • Android开发中给EditText控件添加TextWatcher监听实现对输入字数的限制(推荐)

    做这个功能是因为开发项目的时候,由于后台接口的一些参数的值的长度有要求,不能超过多少个字符,所以在编辑框中输入的字符是要有限制的. 下面就来看一下demo的实现过程: 首先,在xml控件中放置一个EditText控件,然后初始化该控件并对该控件添加文本监听.xml自己简单的设计一下,代码较为简单,直接上代码: package com.example.edittext; import android.app.Activity; import android.os.Bundle; import an

  • Android开发之瀑布流控件的实现与使用方法示例

    本文实例讲述了Android开发之瀑布流控件的实现与使用方法.分享给大家供大家参考,具体如下: public class FlowLayout extends ViewGroup { /**行里子view之间的行距离*/ public int mHorizontolSpace = Util.getDimen(R.dimen.top_padding); /**行里子view之间的垂直距离*/ public int mVerticalSpace = Util.getDimen(R.dimen.top

  • Android开发中使用WebView控件浏览网页的方法详解

    本文实例讲述了Android开发中使用WebView控件浏览网页的方法.分享给大家供大家参考,具体如下: 项目中遇到数学展示问题,常规的Textview显示处理不了数学公式,利用图片生成对服务器又产生较大压力,经过查询,可以通过webview加载JS实现.IOS同样的方法也可实现,但JS渲染效率远高于安卓.对Webview做下总结. 1.WebView 在使用WebView控件时,首先需要在xml布局文件中定义一个WebView控件,定义的方法如下: <WebView android:id=&quo

  • Android 实现自定义折线图控件

    目录 前言 概述 原点 计算Y轴宽度 计算X轴高度 X轴 绘制轴线 X轴刻度间隔 网格线.文本 Y轴 计算Y轴分布 刻度间隔.网格线.文本 折线 代码 前言 日前,有一个“折现图”的需求,如下图所示: 概述 如何自定义折线图?首先将折线图的绘制部分拆分成三部分: 原点 X轴 Y轴 折线 原点 第一步,需要定义出“折线图”原点的位置,由图得: 可以发现,原点的位置由X轴.Y轴所占空间决定: OriginX:Y轴宽度 OriginY:View高度 - X轴高度 计算Y轴宽度 思路:遍历Y轴的绘制文字

  • Android开发技巧之ViewStub控件惰性装载

    在4.5.6节介绍过一个<include>标签,该标签可以在布局文件中引用另外一个布局文件,并可以覆盖被引用布局文件根节点所有与布局相关的属性,也就是以android:layout开头的属性.通过<include>标签可以将一个非常庞大的布局文件分解成若干个较小的布局文件,而且这些小的布局文件也可以被多次引用,从而达到一个重用的目的. <include>标签固然很好用,但有一个问题,就是布局文件中的控件并不一定在程序启动时全都用到,有一些控件只在特定的情况下才会被使用到

  • asp.net微软图表控件使用示例代码分享

    复制代码 代码如下: <configuration>  <system.webServer>    <handlers>      <remove name="ChartImageHandler" />      <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" 

  • 使用Android造了个滚轮控件轮子示例

    关于 Android 实现 iOS 上的滚轮选择效果的控件,到 github 上一搜一大堆,之所以还要造这个轮子,目的是为了更好的学习自定义控件,这个控件是几个月前写的了,经过一段时间的完善,现在开源,顺便写这一篇简单的介绍文章. 效果如下,录屏软件看起来可能有点卡顿,具体可以下载源码运行: 自定义控件无非是 measure,draw,layout 三个过程,如果要支持手势动作,那么就再加上 touch . measure 测量过程比较简单,以文本大小所需要的尺寸,再加上 padding. @O

  • 简单介绍Android开发中的Activity控件的基本概念

    Activity是最基本的模块,一般称之为"活动",在应用程序中,一个Activity通常就是一个单独的屏幕.简单理解,Activity代表一个用户所能看到的屏幕,主要用于处理应用程序的整体性工作,例如监听系统事件,为用户显示指定的View,启动其他Activity等.所有应用的Activity都继承于android.app.Activity类,该类是Android提供的基层类,其他的Activity继承该父类后,通过父类的方法来实现各种功能. Activity 生命周期图如下: 在a

随机推荐