Android 创建一个可拖拽图表-第一部分

android mpchart使用教程,使用MPAndroid打造自定义Chart 记一次工作内容_打造自定义Chart工作需求需要实现一个自定义操作方式的图表,感觉还行,效果如下:效果需求如下:1.基本的图表(使用了MPAndroid框架)2.选择数据时有高亮提示,3秒不操作高亮消失3.图表放大之后拖拽高亮则处理为,高亮被拖拽;拖拽其他区域处理为横坐标拖拽;4.选择数据则显示提示框显示内容,提示框常驻高亮顶部1.实现基本的图表图表的实现就不多解释了,直接贴代码,注释详细:pub... 阅读详情

 

这篇文章将讲述如何通过将部件放在单元格上来创建一个简单的2D图表。

首先你需要一个具有SurfaceView的Activity和一个用来触发画图的线程。如果读者不了解这些基础内容,请先行阅读我的文章series on 2d graphics。

让我们从绘图的最小单元—单元格开始。

每一个单元格都需要一个背景色和唯一的标识ID。

 

 

 

 

 

在第32行我们可以看到是如何画单元格的。变量_cellSize是一个CellMap类的静态成员变量,后面将会介绍。其它代码部分读者应该已经清楚了。

下一个我们需要能触发画图函数onDraw()的线程。你应当已经阅读过我写的关于SurfaceViews的系列文章,下面代码只是这一系列当中普通的一部分。

 

 

 

 

在我们进入绘图之前最后一项准备是我们的Activity.这里也没有什么新东西:

 

 

 

 

现在我们可以进入真正的绘图了。

我们需要创建一个类继承自SurfaceView并且继承SurfaceHolder.Callback接口。同时我们还要为Callback接口和onDraw()函数重写所需的函数。.在这些接口函数中我们将会管理线程,同时我们还要添加在Cell类中用到的_cellSize变量。

 

 

 

 

 

如果你运行这个程序,会看到黑屏,不过这是正常的。

我们要怎样实现一个表呢?我们应该使用一个可以实现图表接口的类。这就需要提到哈希表。

 

 

 

 

 

哈希表只有一个维度,因此我们需要组合两个哈希表来实现二维。一个用来存储行,一个用来存储列。

这是二维哈希表的声明,让我们把它分离开来看为什么我们要以这种方式来使用它。

 

 

 

 

 

这代表由一系列行组成的哈希表。整型参量Integer作为索引来实现根据y坐标定位到某一行。

下面让我们将单元格填入这个图表:

 

 

 

 

我们需要首先定义a_mapSize来定义行列的数量。我们还需要一个绘图对象来将它传递给我们的单元格onDraw()函数。之后在代码的25到32行我们有一个用来计数的变量id以及两层循环。外层循环代表我们按行为单位遍历,内层循环实现向每一行填入单元格。在第28行是将单元格填入各行,第30行是将每一行加入整个哈希表。虽然创建了这个图,但是还不足以使它显示。我们还需要重写onDraw()函数来逐个画出这些单元格。

 

 

 

 

在这里我们看到也是两层循环。这一次是遍历整个哈希表然后在正确的位置绘制每个单元格。一行内单元格都有相同的y坐标,因此我们在遍历一行内单元格时只需计算一次y坐标。每行的y坐标如下所示:0*30=0,1*30=30,2*30=60等等。

在内层循环中我们为一行内每个单元格计算x坐标,每个单元格的x坐标如下所示:0*30=0,1*30=30,2*30=60等等。

然后我们将单元格绘制出来。我们的绘制函数也会同时显示单元格的标识ID,正如下面所示的那样

编译并运行后结果如下。我们的程序绘制10*10的单元格,因为在我的仿真器上绘制100*100的单元格需要将近15秒钟。

 

 

 

为了能够滚动页面,我们需要处理触摸事件

 

 

 

 

 

首先我们需要定义整型变量_xTouch, _yTouch来存储我们最后一次触碰的位置,其次需要两个整型变量_xOffset, _yOffset来存储我们计算得到的位移。为了区分点击和移动,我们需要一个布尔型标志_isMoving..

当触碰事件发生,这个事件的初始标志都会是ACTION_DOWN。这时,前面提到的标志_isMoving会重置为false而且触碰位置将会存储下来。之后有两种不同的情况可能发生:一个是我们在屏幕上随意移动手指,另一个是我们抬起手指松开触碰,即点击。

首先介绍点击情况:这时事件标志ACTION_UP会发生,这时标志_isMoving处于false状态,之后我们进入if代码模块。我们根据位移量计算行列位置。之后我们将行列位置除以每个单元格的大小_cellSize,由于我们的哈希表下标是从0开始的,所以将前面除法得到的值再减一就得到了我们触碰的单元格在每一行和每一列中的编号,之后我们会给出一个包含该单元格的id的提示。

对于移动手指的情况:事件标志ACTION_MOVE会发生,标志_isMoving置True。这样当我们抬起手指时,上面提到的包含单元格id的提示不会出现。

下面我们计算整个图表的位移。重要的减法命令可以保证图向手指移动的相反方向移动。之后的if/else模块是保证当移动手指时,你不会看到图外部区域的空白。这是因为我们并没有画背景或其他东西在图以外区域,如果我们滚动区域超过图的范围,我们可以看到许多显示错误(可以将_mapSize修改为小值,比如10或者更小来测试一下)。最后在49、50行我们需要将触碰位置存储下来。

为了使滚动页面能够工作,我们需要修改onDraw()函数,将其中坐标的计算式都减去前面得到的位移量。

 

 

 

 

可以看到在15到19行,我们减去位移量。

现在你可以编译并运行这个程序。在你确定该程序运行正常后,你可以试一试范围为100*100或更大的图表,之后你可以看到程序绘图延迟非常严重。

在下一个部分中,我将展示如何在一个300*300单元格的图表上实现流畅的滚动页面。

eclipse 工程源码:ScrollMap

原文链接:http://www.droidnova.com/create-a-scrollable-map-with-cells-part-i,654.html

原作者:Martin

android图表收益曲线-MPAndroidChart 今日项目需要绘制一条收益曲线:         由于之前没有用Android画过类似曲线图,就在网上search了一把,最后选择了MPAndroidChart, MPAndroidChart是一款基于Android的开源图表库,MPAndroidChart不仅可以在Android设备上绘制各种统计图表,而且可以对图表进行拖动和缩放操作,应用起来非常灵活,它的官方给的例子就不再粘贴,地址如 阅读详情

相关推荐

Android图表展示实战:HelloCharts框架深入应用

HelloCharts是一个专门为Android设计的开源图表库,它允许开发者以简单直观的方式在应用中添加交互式的图表,例如柱状图、折线图和饼状图等。与许多其他图表库不同,HelloCharts提供了大量的自定义选项,使得图表不仅在视觉上更加吸引人,同时也提供了强大的数据可视化功能。HelloCharts是一个Android库,用于创建各种图表,如折线图、柱状图和饼图等。它提供了丰富的图表配置选项,允许开发者通过简洁的API创建交互式的、动画效果丰富的数据可视化图表。

weixin_29069575的博客 633

Android 自定义随意拖拽布局

Android 自定义随意拖拽布局

leveretz的博客 648

android各种统计图表

资源里面有三个demo,一个是achartengine官方的,最开始我在网上找了很多这个官方demo,因为版本问题不能用,最后才找到这个可以用的是1.1.0版本的。还有两个一个demo是讲的他的应用,里面都有注释。在自己的demo里面加了仿excel表格的统计表,其实就是一个可以水平滑动的gridview比较好用。有什么异议的话,可以给我评论。

基于Android RecyclerView实现宫格拖拽效果

本篇到这里就结束了,我们利用RecyclerView实现了宫格图片的拖拽效果,主要是借助ItemTouchHelper实现,从ItemTouchHelper中我们能看到很多巧妙的的设计,里面有很多值得我们学习的技巧,特别是对事件的处理、绘制顺序调整的方式,如果做吸顶,未尝不是一种方案。因为RecyclerView计算高度的时候,需要考虑这个高度,如果不去处理,那么ReyclerView可能不是禁止不动,而是会滑动,虽然影响不大,但是如果实现全屏效果,还能上下滑的话体验比较差。

chinaherolts2008的博客 266

安卓图表报表相关-android可拖动柱状图.rar

android可拖动柱状图.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

Android实现类似Excel显示数据功能(支持拖动改变列宽)v 1.0

Android实现类似Excel显示数据功能(支持拖动改变列宽)v 1.0的源代码,详细介绍:http://blog.youkuaiyun.com/hello1234123/article/details/38590073

android自定义view滑动图表,GitHub - istudygithub/SuperChartView: Android ChartView 可滑动的自动回滚图表控件、自定义View属性、折线...

SuperChartView1、添加依赖和配置根目录build.gradle文件添加如下配置:allprojects {repositories {maven { url 'https://jitpack.io' }}}APP目录build.gradle文件添加如下配置:dependencies {'com.github.Victory-Over:SuperChartView:v1.0.0'}2、...

weixin_42340136的博客 412

可以左右拖动和快速滑动的折线统计图

使用surfaceview开发的折线统计图,可以左右滑动,手指快速滚动后可以有快速滚动的效果,只需要传入一个对应的list 既可以使用。

Android 自定义统计趋势图

自定义view统计趋势图效果 公司需求要做一个记步的统计图表,在网上找了很多例子没有发现这样的效果,用了MPchart 功能强大,可我不是很会用效果不理想,所有就有了这个博客, 这是最终实现效果, 废话不多说直接上代码,,这是自定义view package com.ormdb.ondraw; import android.content.Conte

Bin的博客 1368

Android 表格控件-动态实现表格效果(内容、样式可扩展)

Android 表格控件-动态实现表格效果(内容、样式可扩展),参考博客:http://blog.youkuaiyun.com/daijin888888/article/details/50159579

CANOE DIVA 工程怎样在具体服务前增加前置条件

然后会在CANoe的Test Module视窗中发现一个跟系统条件相关的Test Module模块,在该模块中有生成跟系统条件相关的CAPL 脚本。这里需要根据你的实际项目进行更改,diva工程加载到canoe的工程的时候,会同步加入你创建的cdd文件,这里示例的ABS_ESP 就是你的cdd的ECU命名,后面就是具体的前置条件服务。4、配置完成后,测试用例就会如下图Trace窗口所示,在每一次10 02请求之前都会调用CAPL Function的PreconditionCheck函数中定义的脚本。

weixin_45940007的博客 1967

Android自定义View实现可拖动条形统计图

可拖动条形统计图

qq_41008818的博客 344

时序SDC约束set_data_check及常见应用场景

时序约束SDC之set_data_check命令及常见应用场景解析

weixin_37584728的博客 2287

android开源图表库MPAndroidChart

最近一个项目需要用到表格进行统计显示,本来用的是的achartengine,后来发现一个更加强大的开源框架MPAndroidChart。 下面简单介绍下MPAndroidChart,MPAndroidChart的效果还是蛮好的,提供各种动画,这个也是我使用MPAndroidChart,而且放弃achartengine的原因。 Github地址连接,后面是youtube上面演示MPAndroid

流水不腐小夏 6万+

从零开始:用君正T23ZN打造智能门锁双摄系统(含代码示例与调试技巧)

本文详细介绍了基于君正T23ZN视频处理芯片构建智能门锁双摄系统的完整实战方案。内容涵盖硬件选型与核心电路设计、软件开发环境搭建、双摄驱动框架、图像信号处理(ISP)调优、人脸识别算法集成与性能优化,以及系统调试与稳定性保障。文章提供了丰富的代码示例和调试技巧,旨在帮助嵌入式开发者高效实现具备人脸识别与监控功能的低功耗智能门锁视觉系统。

opencv7vision的博客 716

RTX 50系显卡(5080/5090D)CUDA 12.8环境下的vLLM部署避坑与实战指南

本文为RTX 5080/5090D显卡用户提供了在CUDA 12.8环境下部署vLLM的完整实战指南。文章详细介绍了从驱动安装、CUDA 12.8环境配置、PyTorch Nightly版本精准匹配,到vLLM源码编译及常见报错排查的全过程,帮助开发者高效利用新一代硬件进行大模型推理。

gray5的博客 669

Android 创建一个可拖拽图表-第二部分

第二部分将向你展示如何改进我们在第一部分实现的2D图表,使滚动更加流畅。

友盟移动开发技术专栏 1505

【Halcon】双目立体视觉引导机械手有序抓取,案例分享

本文介绍了一个基于双目视觉的工件定位与抓取系统。该系统使用两个工业相机组成双目视觉系统,通过标定获取相机参数,采用模板匹配算法识别任意摆放且可能交叠的工件。重点阐述了三维坐标获取方法,特别是通过Z方向高度实现有序抓取的策略。文章详细说明了系统搭建、双目标定、模板创建等关键步骤,并展示了特征点匹配和定位结果。该案例为初学者和开发者提供了双目视觉系统的基本实现参考,展示了机器视觉与机械手协同工作的典型应用场景。

机器视觉从业者 2490

android 开源图表比较好,Android 开源图表库 ------ MPAndroidChart

最近在开发心率方面,要绘制心率图,准备自己写自定义view来实现,查找资料时发现了一款基于Android的开源图表库 -- MPAndroidChart 在github上 已经commits 1500次,经常在维护,想必功能还是很完善,bug很少的。github地址:外链网址已屏蔽可以通过导入库的方式来将该库引入自己的项目也可以在这里 外链网址已屏蔽 通过下载最新mpandroidchartlib...

weixin_33529455的博客 440

【AutoSAR】【以太网】TCP/IP 栈详述与配置

目录 一、TCP/IP栈架构 二、TCP\IP栈的可扩展性 三、以太网协议V4 四、以太网协议 V6 五、基于IP的协议 六、函数调用序列图 一、TCP/IP栈架构 根据以上架构图,该栈主要包括:UPD\TCP\DHCP\ICMP\IPV4\IPV6\ARP; 二、TCP\IP栈的可扩展性 TCP\IP栈为适应不同的应用场景需求,将分为三类: 配置工程里的配置项: 三、以太网协议V4 1 IPV4 Internet Protocol (IP)是T.

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 5696

BMP390L数字大气压传感器原理图设计,已量产(压力传感器)

在工业设备的室内定位、地下设施监测这类 GPS 信号盲区场景里,气压高度检测的 “靠谱程度” 直接决定了系统的可用性 —— 毕竟谁也不想在地下停车场导航时,设备把 1 楼误判成 3 楼。最近在项目里基于博世 BMP390L 做了硬件电路设计,正好聊聊这款工业级数字气压传感器的硬实力,以及原理图里的那些关键设计细节。

不脱发的程序猿 352

android 统计图表MPAndroidChart

android 统计图表MPAndroidChart AndroidMPChart在github上的项目主页: https://github.com/PhilJay/MPAndroidChart  在自己的项目的libs中,导入其发布的jar包即可使用MPAndroidChart。MPAndroidChart发布的jar包页面在:https://github.com/PhilJay/MPAnd

Rokends的博客 1328

实现画布拖拽算子排布,通过flink实现算子编排计算,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1072

leftaxis 安卓_Android使用图表库简单教程

public class MainActivity extendsAppCompatActivity {//图表的实例privateBarChart mBarChart;//图表的数据实例privateBarData mBarData;@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedIn...

weixin_39600510的博客 161

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

比achartengine更加强大的Android图表控件。

比achartengine更加强大的图表控件MPAndroidChart。 详细使用及demo:http://www.see-source.com/androidwidget/detail.html?wid=508 核心功能: 支持x,y轴缩放 支持拖拽 支持手指滑动 ...

chuanpimou5365的博客 88

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: iOS - 使用ZoomingViewController来放大UIView至全屏
下一篇: Android 创建一个可拖拽图表-第二部分
umengcom
博客等级 码龄16年 4粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值