MPAndroidChart的LineChart的使用
来源:互联网 发布:淘宝美工都需要做什么 编辑:程序博客网 时间:2024/04/30 00:25
最近开发用到图表,如果简单使用建议使用hellocharts,不用自己处理ViewPager中的冲突
如果朋友想使用渐变,这里有Github的一个patch,可以自己去源码中添加
LineChart的github补丁
博主也是渣渣对事件处理不是很清楚,坑了一天,希望大家以后可以有更好的处理方式可以告诉博主 O(∩_∩)O
@Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: getParent().requestDisallowInterceptTouchEvent(true);//这里我们是让getParent()去请求 startX = (int) event.getX(); startY = (int) event.getY(); break; case MotionEvent.ACTION_MOVE: endX = (int) event.getX(); endY = (int) event.getY(); if(Math.abs(endX-startX)>Math.abs(endY - startY)){//左右滑动 XAxis xAxis = getXAxis(); if(endX>startX){//右滑 if((int)getLowestVisibleX() == (int) xAxis.getAxisMinimum()){ //这里我们需要父控件去拦截这个事件,判断是否是我们的第一个页面 getParent().requestDisallowInterceptTouchEvent(false); }else{ getParent().requestDisallowInterceptTouchEvent(true); } }else{//左滑 //判断是否是我们的11个详情页里面某一个详情页的里面的最后一个页面 if((int)getHighestVisibleX() == (int) xAxis.getAxisMaximum()){ getParent().requestDisallowInterceptTouchEvent(false); }else{ getParent().requestDisallowInterceptTouchEvent(true); } } }else{//上下滑动 getParent().requestDisallowInterceptTouchEvent(false); } break; case MotionEvent.ACTION_UP: getParent().requestDisallowInterceptTouchEvent(false); break; } return super.onTouchEvent(event); }
- 简单使用
private void showChart() { setLineChartProperties(); setLineChartLegend(); setXAxis(); setYAxis(); setLineData(xListValue.size(),courseList); }
//简单属性的设置private void setLineChartProperties() { mlinechart.getDescription().setEnabled(false);//设置描述文本不显示 mlinechart.setDrawGridBackground(false);//设置是否显示表格背景 mlinechart.setTouchEnabled(true);//设置是否可以触摸 mlinechart.setDragDecelerationFrictionCoef(0.9f); mlinechart.setDragEnabled(true);//设置是否可以拖拽 mlinechart.setScaleEnabled(false);//设置是否可以缩放 mlinechart.setDrawGridBackground(false); mlinechart.setHighlightPerDragEnabled(true); mlinechart.setPinchZoom(true); mlinechart.setBackgroundColor(Color.parseColor("#F3F3F3")); //mlinechart.setBackgroundColor(Color.LTGRAY);//设置背景颜色 float ratio = (float) xListValue.size()/(float) 10; mlinechart.zoom(ratio,1f,0,0);//显示的时候是按照多大的比率缩放显示 1f表示不放大缩小 //我默认手机屏幕上显示10 剩下的滑动折线图然后显示。。假如要显示25个 那么除以10 就是放大2.5f。。同理 // 56个民族 那么放大5.6f mlinechart.animateX(1500);//设置从X轴出来的动画时间 }
private void setLineChartLegend() { //设置图例 Legend l = mlinechart.getLegend(); l.setForm(Legend.LegendForm.CIRCLE);//设置比例图前面的图标 l.setTextSize(11f); l.setTextColor(Color.BLACK); //设置图例的位置 l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.RIGHT); l.setOrientation(Legend.LegendOrientation.HORIZONTAL); l.setDrawInside(false); }
private void setXAxis() { //自定义设置横坐标 IAxisValueFormatter xValueFormatter = new ExamModelTwoYValueFormatter(xListValue); //X轴 XAxis xAxis = mlinechart.getXAxis(); xAxis.enableGridDashedLine(10f, 10f, 0f); xAxis.setTextSize(11f); xAxis.setTextColor(Color.BLACK); xAxis.setDrawGridLines(false);//设置不从X轴发出横线 xAxis.setDrawAxisLine(true);//设置显示X轴 xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//设置X轴现实的位置 xAxis.setValueFormatter(xValueFormatter);//设置自定义X轴值 //xAxis.setLabelCount(xListValue.size());//设置X轴显示的个数 xAxis.setLabelCount(10);//一个界面显示10个Lable。那么这里要设置11个 xAxis.setGranularity(1f);//设置最小间隔,防止当放大时出现重复标签 xAxis.setLabelRotationAngle(-40f); }
private void setYAxis() { YAxis leftYAxis = mlinechart.getAxisLeft(); leftYAxis.setTextColor(Color.BLACK);//设置左边Y轴的字体颜色 leftYAxis.setTextSize(11f);//设置左边Y轴的字体大小 //leftYAxis.setGridColor(Color.parseColor("#ff8b3d"));设置网格线的颜色 //leftYAxis.setAxisMaximum(1000f);//设置Y轴最大值 leftYAxis.setAxisMinimum(0f);//设置Y轴最小值是0 leftYAxis.setDrawGridLines(true);//设置从Y轴发出横向直线 leftYAxis.setGranularityEnabled(true); leftYAxis.setDrawAxisLine(true);//设置左边Y轴显示 //leftYAxis.setDrawZeroLine(false); YAxis rightYAxis = mlinechart.getAxisRight(); rightYAxis.setEnabled(false);//设置右边Y轴隐藏 }
private int[] mColors = new int[] { Color.parseColor("#FFD700"), Color.parseColor("#FF3E96"), Color.parseColor("#EEEE00"), Color.parseColor("#EE0000"), Color.parseColor("#CD853F"), Color.parseColor("#98F5FF") }; private void setLineData(int size,ArrayList<String> courseList){ mlinechart.resetTracking(); ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>(); for (int z = 0; z < courseList.size(); z++) { ArrayList<Entry> values = new ArrayList<Entry>(); for (int i = 0; i < size; i++) { double val = (Math.random() * size) + 3; values.add(new Entry(i, (float) val)); } //LineDataSet d = new LineDataSet(values, "DataSet " + (z + 1)); LineDataSet set = new LineDataSet(values, courseList.get(z)); set.setLineWidth(2.5f); set.setCircleRadius(4f); int color = mColors[z % mColors.length]; set.setColor(color); set.setCircleColor(color); set.setHighlightEnabled(true);//设置是否显示十字线 // 改变折线样式,用曲线。 set.setMode(LineDataSet.Mode.CUBIC_BEZIER); // 曲线的平滑度 set.setCubicIntensity(0.2f); //设置填充 //set.setDrawFilled(true); //set.setFillAlpha(20); //set.setFillColor(Color.GREEN); //设置背景渐变 /*if (Utils.getSDKInt() >= 18) { // fill drawable only supported on api level 18 and above Drawable drawable = ContextCompat.getDrawable(this, R.drawable.fade_red);//设置渐变 set.setFillDrawable(drawable); } else { set.setFillColor(Color.GREEN); }*/ dataSets.add(set); } // make the first DataSet dashed //((LineDataSet) dataSets.get(0)).enableDashedLine(10, 10, 0); //((LineDataSet) dataSets.get(0)).setColors(ColorTemplate.VORDIPLOM_COLORS); //((LineDataSet) dataSets.get(0)).setCircleColors(ColorTemplate.VORDIPLOM_COLORS); LineData data = new LineData(dataSets); //data.setValueTextColor(Color.BLACK);//设置数据点文字颜色 //data.setValueTextSize(10f);//设置数据点文字大小 data.setDrawValues(true);//设置不显示数据点 mlinechart.setData(data); mlinechart.invalidate(); }
有的朋友可能会用到背景渐变
//设置填充 set.setDrawFilled(true);//设置允许填充 set.setFillAlpha(85); //set.setFillColor();//设置填充的颜色 //设置背景渐变 if (Utils.getSDKInt() >= 18) { // fill drawable only supported on api level 18 and above Drawable drawable = ContextCompat.getDrawable(getActivity(), R.drawable.line_chart_gradient);//设置渐变 set.setFillDrawable(drawable); } else { set.setFillColor(Color.RED); }
阅读全文
0 0
- MPAndroidChart的LineChart的使用
- 关于 MPAndroidChart 中的 LineChart 的使用小结
- MPAndroidChart折线图(LineChart)的使用,可以左右滑动
- MPAndroidChart之LineChart使用
- Android图表控件MPAndroidChart——曲线图LineChart的使用(多条曲线)
- MPAndroidChart--LineChart
- MPAndroidChart库使用详解——LineChart
- MPAndroidChart之LineChart项目使用心得
- Flex中的LineChart的使用
- MPAndroidChart的使用
- MPAndroidChart的使用技巧
- MPAndroidChart的使用记录
- 基于MPAndroidChart的自定义LineChart(二)----添加单击事件的处理
- 基于MPAndroidChart的自定义LineChart(一)----节点绘制叉号+分段绘制背景
- 解决MPAndroidChart-LineChart清除数据刷新后X轴取值不准确的问题
- MPAndroidChart学习笔记----LineChart
- MPAndroidChart之LineChart
- MPAndroidChart 之LineChart(1)
- 刷题——Find them, Catch them POJ
- 简易实现项目的频道管理(防)
- getline
- 数组模拟二叉树之P1030 求先序排列
- 51 nod 1304 1304 字符串的相似度(exkmp)
- MPAndroidChart的LineChart的使用
- express目录结构
- IO流常用方法,流的用法,代码例子
- PHP实现Elasticsearch全文检索
- Android 03 style简单介绍
- 继承,重载,多态
- tablayout上显示网络数据(xUtils请求)s
- 转载 2014年04月22日 09:01:19 VC6.0工程在编译时由于设置问题有时不会生成release版本,只有debug版本。 解决犯非法如下: 工程——设置,将Setting for
- POJ2777Count Color