- 浏览: 105682 次
- 性别:
- 来自: 温州
文章分类
最新评论
-
q316085319:
www.glmei.cn
android spinner修改 样式 -
q316085319:
www.glmei.cn
android spinner修改 样式 -
348724481:
<div class="quote_title ...
achartengine动态加载数据 -
cnyangqi:
。。。我还以为是demo。。。
zTree拖拽效果 -
简屋_l:
请问下楼主怎么改变弹出窗口的整体背景色 不是item背景
android spinner修改 样式
现在项目有个需求就是利用achartengine动态的加载数据,当拖动图表时会下载几条数据,拖动的轨迹越长,加载的数据就越多。网上查了些资料,找不到这样的例子。于是自己写了个package com.cng;
import java.util.ArrayList; import java.util.List; import org.achartengine.ChartFactory; import org.achartengine.chart.PointStyle; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.model.XYSeries; import org.achartengine.renderer.XYMultipleSeriesRenderer; import org.achartengine.renderer.XYSeriesRenderer; import android.R.integer; import android.app.Activity; import android.content.Intent; import android.graphics.Color; import android.graphics.Paint.Align; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.LinearLayout; public class DynLoadActivity extends Activity { /** Called when the activity is first created. */ private XYMultipleSeriesDataset mDataset=new XYMultipleSeriesDataset();; private XYSeries mAtentionSeries=new XYSeries("哈哈哈"); //全局变量 , 记录条数 private int total=0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String[] titles = new String[] { "Crete"}; int[] colors = new int[] { Color.BLUE}; PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE}; XYMultipleSeriesRenderer renderer = buildRenderer(colors, styles); int length = renderer.getSeriesRendererCount(); for (int i = 0; i < length; i++) { ((XYSeriesRenderer) renderer.getSeriesRendererAt(i)).setFillPoints(true); } setChartSettings(renderer, "Average temperature", "Month", "Temperature", 0.5, 12.5, -10, 2000, Color.LTGRAY, Color.LTGRAY); // renderer.setXAxisMin(0); // renderer.setXAxisMax(100); renderer.setXLabels(12); renderer.setYLabels(10); renderer.setShowGrid(true); renderer.setXLabelsAlign(Align.RIGHT); renderer.setYLabelsAlign(Align.RIGHT); renderer.setZoomButtonsVisible(true); renderer.setPanLimits(new double[] { -10, 2000, -10, 2000 }); renderer.setZoomLimits(new double[] { -10, 2000, -10, 2000 }); LinearLayout linearLayout=(LinearLayout)findViewById(R.id.linear); total++; mAtentionSeries.add(1, 11); mDataset.addSeries(mAtentionSeries); View view = ChartFactory.getLineChartView(this,mDataset , renderer); linearLayout.addView(view); view.setOnTouchListener(new OnTouchListener() { int x=0; int x2=0; public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { //按下时触发 //判断是否向做移动 if(x-x2>0) { //获取要从服务器获取的条数 int length=(x-x2)/20; //添加数据至图标中 for(int i=0;i<length;i++) { /** toatal可当做参数传至服务器上来获取数据 * 因为获取数据时必须获取的是少量的中间的连续数据 * 可从for循环外面将参数total,total+length传入获取数据库中的第total到total+length数据 */ total++; Log.e(total+"", total+""); mAtentionSeries.add(total, total); } } //将触摸式按下的横坐标记住 x=(int) event.getX(); } case MotionEvent.ACTION_MOVE: { //移动时触发 //将触摸时手指离开时的横坐标记录 x2=(int) event.getX(); } case MotionEvent.ACTION_UP: { //触摸后触发 } } return false; } }); } private XYMultipleSeriesRenderer buildRenderer(int[] colors, PointStyle[] styles) { XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); // 控制横纵轴的属性字大小 renderer.setAxisTitleTextSize(15); // 控制横纵轴的值大小 renderer.setChartTitleTextSize(20); renderer.setLabelsTextSize(15); renderer.setLegendTextSize(15); renderer.setPointSize(5f); renderer.setMargins(new int[] { 20, 30, 15, 0 }); int length = colors.length; for (int i = 0; i < length; i++) { XYSeriesRenderer r = new XYSeriesRenderer(); r.setColor(colors[i]); r.setPointStyle(styles[i]); renderer.addSeriesRenderer(r); } return renderer; } private void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle, String yTitle, double xMin, double xMax, double yMin, double yMax, int axesColor, int labelsColor) { renderer.setChartTitle(title); renderer.setXTitle(xTitle); renderer.setYTitle(yTitle); renderer.setXAxisMin(xMin); renderer.setXAxisMax(xMax); renderer.setYAxisMin(yMin); renderer.setYAxisMax(yMax); renderer.setAxesColor(axesColor); renderer.setLabelsColor(labelsColor); } private XYMultipleSeriesDataset buildDataset(String[] titles, List<double[]> xValues, List<double[]> yValues) { XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); int length = titles.length; for (int i = 0; i < length; i++) { XYSeries series = new XYSeries(titles[i]); double[] xV = xValues.get(i); double[] yV = yValues.get(i); int seriesLength = xV.length; for (int k = 0; k < seriesLength; k++) { series.add(xV[k], yV[k]); } dataset.addSeries(series); } return dataset; } }
其实原理很简单 就是捕获ontouch事件的ACTION_DOWN ,ACTION_UP事件,记下他们的x坐标。在下一次ACTION_DOWN 时出发加载数据事件,我这里没有调用访问webservice事件,
只是模拟了几个数据。
这代码很水,望指教
评论
13 楼
348724481
2013-12-12
ducp123 写道
348725767 写道
bailin_ys 写道
348725767 写道
天涯jelly 写道
你好,我用achartengine做出来的图,我想设置整个布局的背景,为什莫运行出来后变成了那个图标的背景呢,四周都是黑色的呢?
貌似我也遇到过,但是没解决。。
我也纠结了好久,发现一个方法可以解决,renderer.setMarginsColor(color);
因为backgroundColor只是图标中间绘图部分的背景颜色,所以要使周边也变色就要加上这句了。
学习了
你好!!我想问一下,他怎么去获取list里面的数据?list类型为List<May<String,Object>> data ;请问怎么获取data里面的数据来进行数据的build呢?
下面的背景改不了啊
12 楼
ducp123
2012-08-24
348725767 写道
bailin_ys 写道
348725767 写道
天涯jelly 写道
你好,我用achartengine做出来的图,我想设置整个布局的背景,为什莫运行出来后变成了那个图标的背景呢,四周都是黑色的呢?
貌似我也遇到过,但是没解决。。
我也纠结了好久,发现一个方法可以解决,renderer.setMarginsColor(color);
因为backgroundColor只是图标中间绘图部分的背景颜色,所以要使周边也变色就要加上这句了。
学习了
你好!!我想问一下,他怎么去获取list里面的数据?list类型为List<May<String,Object>> data ;请问怎么获取data里面的数据来进行数据的build呢?
11 楼
348725767
2012-08-12
bailin_ys 写道
348725767 写道
天涯jelly 写道
你好,我用achartengine做出来的图,我想设置整个布局的背景,为什莫运行出来后变成了那个图标的背景呢,四周都是黑色的呢?
貌似我也遇到过,但是没解决。。
我也纠结了好久,发现一个方法可以解决,renderer.setMarginsColor(color);
因为backgroundColor只是图标中间绘图部分的背景颜色,所以要使周边也变色就要加上这句了。
学习了
10 楼
bailin_ys
2012-08-07
348725767 写道
天涯jelly 写道
你好,我用achartengine做出来的图,我想设置整个布局的背景,为什莫运行出来后变成了那个图标的背景呢,四周都是黑色的呢?
貌似我也遇到过,但是没解决。。
我也纠结了好久,发现一个方法可以解决,renderer.setMarginsColor(color);
因为backgroundColor只是图标中间绘图部分的背景颜色,所以要使周边也变色就要加上这句了。
9 楼
hubenshan
2012-04-18
按还在学习学习学习!
8 楼
cn23snyga
2012-04-18
图表的背景与它的父容器背景是分开的。
图表中有一个属性,可以设置穿透背景色,就可以显示出其父容器的背景了
而且设置图表的背景,同时还要设置图表背景生效的一个属性。
我的图表已经重做了,使用Canvas 绘图,因为项目需求又要增加更多的关于图表的操作
个人认为,使用ACE制表,只适合单一的图表显示,不适合在其上增加操作
自己绘图,可以更好的控制图表的坐标,增加响应事件。
图表中有一个属性,可以设置穿透背景色,就可以显示出其父容器的背景了
而且设置图表的背景,同时还要设置图表背景生效的一个属性。
我的图表已经重做了,使用Canvas 绘图,因为项目需求又要增加更多的关于图表的操作
个人认为,使用ACE制表,只适合单一的图表显示,不适合在其上增加操作
自己绘图,可以更好的控制图表的坐标,增加响应事件。
7 楼
348725767
2012-04-17
天涯jelly 写道
你好,我用achartengine做出来的图,我想设置整个布局的背景,为什莫运行出来后变成了那个图标的背景呢,四周都是黑色的呢?
貌似我也遇到过,但是没解决。。
6 楼
天涯jelly
2012-04-17
你好,我用achartengine做出来的图,我想设置整个布局的背景,为什莫运行出来后变成了那个图表的背景呢,四周都是黑色的呢?
5 楼
天涯jelly
2012-04-17
你好,我用achartengine做出来的图,我想设置整个布局的背景,为什莫运行出来后变成了那个图标的背景呢,四周都是黑色的呢?
4 楼
cn23snyga
2012-03-07
348725767 写道
cn23snyga 写道
或者换个说法,拆线图表中,如何获取到横、纵坐标的节点值?怎样和屏幕坐标换算呢?
或者可不可以在节点处加一图形,我就想在点击这个节点时,弹出一个pop窗口,不是任意一点都可以弹,只是在节点处触发!!?
请贵博赐教!!!
或者可不可以在节点处加一图形,我就想在点击这个节点时,弹出一个pop窗口,不是任意一点都可以弹,只是在节点处触发!!?
请贵博赐教!!!
这个我不知道。。我也是新手。。也没深入研究过。。
要么你去网上找找看,他那个图表的移动肯定也是根据横纵坐标来移动的。
问题解决了,实现方法有点笨拙,就是换算图表和屏幕坐标,期待大家有更好的方法实现。
有需要的朋友可以联系我QQ:14561917
3 楼
348725767
2012-02-18
cn23snyga 写道
或者换个说法,拆线图表中,如何获取到横、纵坐标的节点值?怎样和屏幕坐标换算呢?
或者可不可以在节点处加一图形,我就想在点击这个节点时,弹出一个pop窗口,不是任意一点都可以弹,只是在节点处触发!!?
请贵博赐教!!!
或者可不可以在节点处加一图形,我就想在点击这个节点时,弹出一个pop窗口,不是任意一点都可以弹,只是在节点处触发!!?
请贵博赐教!!!
这个我不知道。。我也是新手。。也没深入研究过。。
要么你去网上找找看,他那个图表的移动肯定也是根据横纵坐标来移动的。
2 楼
cn23snyga
2012-02-16
或者换个说法,拆线图表中,如何获取到横、纵坐标的节点值?怎样和屏幕坐标换算呢?
或者可不可以在节点处加一图形,我就想在点击这个节点时,弹出一个pop窗口,不是任意一点都可以弹,只是在节点处触发!!?
请贵博赐教!!!
或者可不可以在节点处加一图形,我就想在点击这个节点时,弹出一个pop窗口,不是任意一点都可以弹,只是在节点处触发!!?
请贵博赐教!!!
1 楼
cn23snyga
2012-02-16
请教贵博,用ACE 绘制出的图表,可以捕捉到点击事件的坐标值吗?(注:是图表中的坐标,而不是屏幕的坐标,或者有好方法可以二者换算也可以)
另:贵博很强大,膜拜!!!
另:贵博很强大,膜拜!!!
发表评论
-
新建heroku java服务端
2012-10-16 17:19 1476heroku就是你可以将项目托管至他们的服务器,然 ... -
照片涂涂涂源码
2012-04-17 19:18 1308最近整理了下自己做的小软件的源码。贡献给大家。 做的小软件的 ... -
照片涂鸦操作说明
2012-04-10 20:27 1479照片涂鸦 “照片涂涂涂”是一款对图片进行涂写的软件 ... -
开发了个安卓软件-照片涂鸦
2012-04-10 20:28 1431最近学习android开发的时候,觉得有必要做个小软件练练手, ... -
android 本地语音开发
2011-11-03 15:37 1568最近在做一个android 平台上的语音应用,android自 ... -
android ormlite 登录注册的例子
2011-08-31 17:29 3765ormlite的资料真少,网上很难找,就干脆自己看些api,以 ... -
android orm映射框架 ormlite (类似于hibernate) 很强大
2011-08-30 21:56 7042初学android不久,由于我是以前学过j2ee,什么ssh曾 ... -
android自定义listview
2011-08-29 20:11 1901这是我从网上找的,稍做修改,分享下。 xml布局文件有 ... -
android top弹出框
2011-08-29 20:04 1602android top弹出框的实现原理:当要弹出菜单的时候将隐 ... -
android 实现3d旋转
2011-08-29 19:40 2021通过继承Animation动画类 封装了一个3d旋转的效果代 ... -
android封装的menu自定义菜单列表
2011-08-16 01:41 2124自己封装的menu自定义菜单列表,首先必须创建一个类继承act ... -
新收集的android的gallery 立体样式的
2011-08-16 01:25 2297新收集的android的gallery 立体样式的 -
android 绑定sqlite数据库与程序一起发布
2011-08-12 00:50 1619由于需求需要某程序一安装就得有几个数据 , 而现在的程序是 ... -
android 图表插件 achartengine
2011-08-09 00:40 1924android 比较实用的图表插件 可放大 缩小 功能 ... -
android spinner修改 样式
2011-08-09 00:30 25886做到一种样式 android 的spinner本身背景样式要 ... -
android自定义按钮控件样式
2011-08-09 00:03 2313android自定义控件其实就是定义一个xml按钮控件样式然后 ...
相关推荐
否则那些数据都会被加载,最后重新绘制饼图,构建动态饼图的步骤主要分为以下四步,还需要在项目中引入AChartEngine依赖jar包,在Manifest中添加<activityandroid:name="org.achartengine.GraphicalActivity" />
4. 添加数据:将数据源映射到图表上,可以是静态数据,也可以是动态加载的数据。 5. 渲染和显示:将创建好的图表渲染成位图并显示在界面上,或使用View直接添加到布局中。 6. 处理用户交互:如需要,可以添加监听器...
官方的API并没有提供可以借鉴的动态更新饼图的方法,考虑到数据都是活动的,不可能总是用静态数据,所以我下面的demo就是模拟动态数据用饼图显示,但是肯定可以使用的,具体是通过定时器+Handler实现定时任务,通过...
- 当处理大量数据时,考虑使用动态数据加载,以提高性能。 - 优化图表的尺寸和比例,确保在不同屏幕尺寸和分辨率的设备上看起来良好。 - 为用户提供解释图表的能力,例如添加图例和数据点的提示。 总结,...
可以使用`AsyncTask`或者`Retrofit`等网络库来异步加载数据,并在回调中更新图表。数据结构可以是包含时间戳和对应值的列表。 动态更新的关键在于调用`ChartView`的`refresh()`方法。每次数据刷新后,我们需要更新`...
针对大数据集,AChartEngine支持动态加载和缓存策略,以提高图表渲染效率,避免内存泄漏和卡顿现象。 9. **标签应用**: 在描述中提到的"曲线图"是AChartEngine支持的一种图表类型,开发者可以使用`...
例如,示例代码可以展示如何创建图表、加载数据、设置图表样式等,而文档则会详细解释各个API的作用和使用方法。 为了更好地利用AchartEngine,开发者需要了解一些Android编程的基础知识,如布局管理、数据绑定和...
1. 考虑性能:在处理大量数据时,注意优化数据加载和绘制过程,避免影响应用的流畅性。 2. 自定义样式:为了使图表更具吸引力,可以深度定制图表的颜色、字体、背景等视觉元素。 3. 更新与维护:由于AChartEngine...
本篇文章将深入探讨如何使用`AChartEngine`在Android应用中实现折线图的功能,并强调动态加载数据的实现。 首先,我们需要了解`AChartEngine`的基本用法。这个库提供了多种图表类型,如折线图、柱状图、饼图等。在`...
如果图表数据过多,考虑分页加载,只在当前显示的图表范围内加载数据。同时,`AChartEngine`支持缓存图表图片,这可以避免每次滑动都重新绘制图表,提高滚动流畅性。 总之,AChartEngine结合`ViewPager`能够提供一...
- **性能优化**:大量数据时,可以考虑使用缓存或异步加载策略,提高图表绘制效率。 - **交互性增强**:利用AChartEngine提供的触摸事件处理,实现图表的点击、拖动等交互功能。 总结来说,AChartEngine通过其清晰...
AChartEngine支持动态更新图表数据。当数据源发生变化时,可以通过`ChartView`的`refreshChart()`方法刷新图表,以反映最新的数据。 ### 5. 导出图表 除了在应用内显示,AChartEngine还可以将图表导出为图片文件,...
本项目是围绕AchartEngine进行的,主要目标是实现动态绘图,让数据变化实时反映在图表上,为用户提供直观的数据洞察。 在这个项目中,`.classpath`文件是Eclipse(一个流行的Android开发IDE)的配置文件,它包含了...
在实际项目中,你可能还需要处理其他细节,如时间格式化、数据加载策略以及交互式功能的添加。`TestChart`这个文件可能是示例代码或者测试用例,进一步探索这个文件可以加深对`ACHartEngine`的理解和应用。 总的来...
总的来说,无论选择AChartEngine还是iChartJS,理解数据结构、掌握库的API以及合理设计图表样式都是成功实现折线图的关键。通过不断实践和优化,你可以在Android应用中创建出专业且引人入胜的数据展示。
1. 性能优化:在处理大量数据时,考虑使用缓存策略减少计算量,或者采用异步加载数据的方式,避免 UI 延迟。 2. 动态更新:实时更新数据时,使用 `ChartView.repaint()` 方法刷新图表。 3. 自定义渲染:通过继承...
在实际应用中,AchartEngine还可以与其他组件结合使用,例如与SQLite数据库配合,动态加载和更新图表数据。同时,它还支持导出图表为图片,方便用户分享或保存。 总之,AchartEngine是Android开发中一个非常实用的...
7. **动态更新**:如果你的数据是动态变化的,AChartEngine支持实时更新图表,无需重新创建整个图表。 8. **多图表组合**:在一个布局中,你可以同时显示多个不同类型的图表,以便对比和分析数据。 9. **图表动画*...
**AChartEngine库详解及其在...在这个"achartengineDemo"实例中,折线图的实现展示了AChartEngine在数据可视化方面的灵活性和实用性。无论是在商业应用还是科研项目中,它都能有效地帮助我们更好地理解和传达数据信息。
AChartEngine允许动态更新数据,实现图表的实时变化。 3. **设置图表属性**:包括颜色、字体、背景、轴标签、图例等。AChartEngine提供了丰富的定制选项,使得图表的外观可以按照应用的设计风格进行调整。 4. **...