应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

android使用MPAndroidChart开源图表折线图

11397人阅读 2019/3/14 17:49 总访问:5194502 评论:0 收藏:0 手机
分类: 移动开发




1. 将mpandroidchartlibrary-2-1-6.ja包copy到项目的libs中在引用



2:布局文件


  1.  <com.github.mikephil.charting.charts.LineChart
  2.         android:id="@+id/chart1"
  3.         android:layout_marginTop="10dp"
  4.         android:layout_width="match_parent"
  5.         android:layout_height="200dp"
  6.          />


3:后台代码

  1. public class OilReportformsFragment extends Fragment{
  2.  
  3. @Override
  4. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  5. Bundle savedInstanceState) {
  6. // TODO Auto-generated method stub
  7. //return super.onCreateView(inflater, container, savedInstanceState);
  8. return inflater.inflate(R.layout.oilreportforms, container, false);
  9. }
  10. @Override
  11. public void onActivityCreated(Bundle savedInstanceState) {
  12. // TODO Auto-generated method stub
  13. //getActivity().getActionBar().setDisplayHomeAsUpEnabled(true); 
  14. super.onActivityCreated(savedInstanceState);
  15. LineChart  mChart = (LineChart)getActivity().findViewById(R.id.chart1);
  16. mChart.setDescription("");
  17. mChart.setDrawGridBackground(false);
  18.  
  19.         
  20.         ///aj
  21. mChart.setTouchEnabled(true);
  22. mChart.setDragEnabled(true);
  23. mChart.setScaleEnabled(true);
  24.         
  25. Typeface mTf = Typeface.createFromAsset(getActivity().getApplicationContext().getAssets(), "OpenSans-Regular.ttf");
  26.         
  27.         XAxis xAxis = mChart.getXAxis();
  28.         xAxis.setPosition(XAxisPosition.BOTTOM);
  29.         xAxis.setTypeface(mTf);
  30.         xAxis.setDrawGridLines(false);
  31.         xAxis.setDrawAxisLine(true);
  32.  
  33.         YAxis leftAxis = mChart.getAxisLeft();
  34.         leftAxis.setTypeface(mTf);
  35.         leftAxis.setLabelCount(5false);
  36.         
  37.         YAxis rightAxis = mChart.getAxisRight();
  38.         rightAxis.setTypeface(mTf);
  39.         rightAxis.setLabelCount(5false);
  40.         rightAxis.setDrawGridLines(false);
  41.  
  42.         // set data
  43.         mChart.setData((LineData)generateDataLine(1));
  44.  
  45.         // do not forget to refresh the chart
  46.         // holder.chart.invalidate();
  47.         mChart.animateX(750);
  48. }
  49.  private LineData generateDataLine(int cnt) {
  50.  
  51.         ArrayList<Entry> e1 = new ArrayList<Entry>();
  52.  
  53.         
  54.         for (int i = 0; i < 12; i++) {
  55.             e1.add(new Entry((int) (Math.random() * 65), i));
  56.         }
  57.        
  58.  
  59.         LineDataSet d1 = new LineDataSet(e1, "New DataSet " + cnt + ", (1)");
  60.         /*   d1.setLineWidth(2.5f);
  61.         d1.setCircleSize(4.5f);*/
  62.         
  63.         d1.setLineWidth(2.5f);
  64.         d1.setCircleSize(5.5f);//折线的圆点大小
  65.         d1.setHighLightColor(Color.rgb(244117117));
  66.         d1.setDrawValues(true);
  67.         
  68.         ArrayList<Entry> e2 = new ArrayList<Entry>();
  69.  
  70.         for (int i = 0; i < 12; i++) {
  71.             e2.add(new Entry(e1.get(i).getVal() - 30, i));
  72.         }
  73.         
  74.         ArrayList<LineDataSet> sets = new ArrayList<LineDataSet>();
  75.         sets.add(d1);
  76.         
  77.         //这个图标坐标显示对应的坐标是按照顺序对应的,第一个y对应第一个x,这么来的
  78.         ArrayList<String> m = new ArrayList<String>();
  79.         m.add("9:00:37");
  80.         m.add("9:30:28");
  81.         m.add("10:00");
  82.         m.add("10:30");
  83.         m.add("May");
  84.         m.add("Jun");
  85.         m.add("12:00:59");
  86.         m.add("Aug");
  87.         m.add("Sep");
  88.         m.add("Okt");
  89.         m.add("Nov");
  90.         m.add("Dec");
  91.         
  92.         
  93.         LineData cd = new LineData(m, sets);
  94.         return cd;
  95.     }
  96.  
  97. @Override
  98. public void onCreate(Bundle savedInstanceState) {
  99. // TODO Auto-generated method stub
  100. super.onCreate(savedInstanceState);
  101. setHasOptionsMenu(true);//添加菜单不调用该方法是没有用的
  102. }
  103. public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
  104. // TODO Auto-generated method stub
  105. menu.clear();
  106.     inflater.inflate(R.menu.backaj, menu);                     
  107. super.onCreateOptionsMenu(menu, inflater);
  108. }
  109.  
  110. @Override
  111. public boolean onOptionsItemSelected(MenuItem item) {  
  112. if(item.getItemId() == android.R.id.home)
  113. getActivity().getActionBar().setDisplayHomeAsUpEnabled(false); 
  114. MainActivity mc =(MainActivity)getActivity();
  115. mc.switchContent(this,getActivity().getSupportFragmentManager().findFragmentByTag("more"),"");
  116. }
  117. if(item.getItemId() == R.id.action_back)
  118. MainActivity mc =(MainActivity)getActivity();
  119. mc.switchContent(this,getActivity().getSupportFragmentManager().findFragmentByTag("more"),"");
  120. }
  121.     return true;
  122. }


4:常见异常处理


Typeface mTf = Typeface.createFromAsset(getActivity().getApplicationContext().getAssets(), "OpenSans-Regular.ttf");

java.lang.RuntimeException: native typeface cannot be made

需要把对应的文件复制到assets目录里边不然找不到这里的文件是OpenSans-Regular.ttf



5:mpandroidchart开源git地址


https://github.com/PhilJay/MPAndroidChart

git文档

https://github.com/PhilJay/MPAndroidChart/wiki


6:android mpandroidchart 设置y抽不从0开始,让y轴更具坐标自适应

  1. YAxis yal =mChart.getAxisLeft();
  2. yal.setStartAtZero(false);
  3. YAxis yar =mChart.getAxisRight();
  4. yar.setStartAtZero(false);



欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价