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

android使用MPAndroidChart开源图表折线图

11696人阅读 2019/3/14 17:49 总访问:5413975 评论: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)

评价

解决android studio运行出现Session 'app': Error Installing APKs错误

之前项目好好的,早上打开突然报错Session &#39;app&#39;: Error Installing APKs解决方法:选择Build———— clean proje...

android 弹出选择框简单通用弹出选择框

制作一个简单通用的弹出选择框LinearLayoutll=(LinearLayout)getActivity().findViewById(R.id.log_sel_qyport); ll.set...

android studio打包脱坑1

打包时出现的&#39;:app:validateExternalOverrideSigning&#39;问题报错如下解决方法错误的原因是找不到这个签名文件。由于K...

javaandroid 使用socket.io-client连接nodejs websocket

socket.io-client相比SocketIO.jar使用起来更方便一点publicvoidconnection(finalMapAction_action){ try{ IO.Optionsopt...

javaandroid 使用SocketIO.jar连接nodejs websocket

socket.io-client版连接nodejs websockethttp://www.tnblog.net/aojiancc2/article/details/2562一:更具url建立连接,调用...

Xamarin: android.permission.CALL_PHONE 的权限问题

写个电话拨号器,很简单就一个Edittext和一个button,用来输入号码并且点击按钮拨打电话,但是写好以后报的是安全错误,我上...

android 漂亮的listview

效果如下:首先在drawable下定义选择器shape_bg_listview.xml 实现圆角:&lt;?xmlversion=&quot;1.0&quot;encoding=&quot;...

android 获取导航栏的高度

获取Android手机屏幕的高度/** *获取状态栏高度 * *@paramcontext上下文 *@return高度 */publicstaticintgetStatusBar...

android 代码

一、判断WiFi是否打开1、注册权限//需注册权限android.permission.ACCESS_WIFI_STATE WifiManagerwifiManager=(WifiManage...

ionic cordova platform add android报错

ionic各种环境以及配置完但是添加平台报错:Using cordova-fetch for anroidFailed to fetch platform anroidProbably this...

android 布局文件里输入框的值自动转换到类里边可以增加为空验证

android 布局文件里输入框的值自动转换到类里边,不用一个一个去读取在赋值先看看android遍历view子控件,用回调函数 /** ...

android 布局实例解析 格子菜单效果

使用android权重布局,使每个格子和间隔在不同手机中自动适配: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8...

android后台动态添加布局文件、控件与动态设置属性

翻译布局文件布局文件 &lt;LinearLayout android:layout_width=&quot;fill_parent&quot; andro...

android后台动态添加布局文件、控件与动态设置属性2

原布局文件 &lt;ScrollView android:layout_width=&quot;wrap_content&quot; android:layout_heig...

android 绘制自定义控件,android绘制同心圆,android绘制小三角,android画虚线

一:实现同心圆加小三角指向效果 同心圆public class RingView extends View{ private Paint paint; privat...