首页 > 其他分享 >android折线图的实现

android折线图的实现

时间:2023-04-20 22:11:41浏览次数:53  
标签:layout 实现 false mChart add 折线图 new android

一:配置

参考上篇博客

二:模板代码

MainActivity:
public class MainActivity extends AppCompatActivity {

private LineChart mChart;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mChart = findViewById(R.id.line_chart);
mChart.setTouchEnabled(false);
mChart.setDragEnabled(false);
mChart.setScaleEnabled(false);
mChart.setPinchZoom(false);
mChart.setDrawGridBackground(false);
mChart.getDescription().setEnabled(false);

Legend legend = mChart.getLegend();
legend.setEnabled(false);

XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setGranularity(1f);
xAxis.setAxisMinimum(0f);
xAxis.setAxisMaximum(6f);
final String[] labels = new String[7];
for (int i = 0; i <7; i++) {
labels[i] = getPastDate(i);
}
xAxis.setValueFormatter(new IndexAxisValueFormatter(labels));

YAxis yAxis = mChart.getAxisLeft();
yAxis.setDrawGridLines(false);
yAxis.setGranularity(1f);
yAxis.setAxisMinimum(0);
yAxis.setAxisMaximum(1000);
//数据
ArrayList<Entry> values = new ArrayList<>();
values.add(new Entry(0, 5f));
values.add(new Entry(1, 4f));
values.add(new Entry(2, 6f));
values.add(new Entry(3, 7f));
values.add(new Entry(4, 8f));
values.add(new Entry(5, 3f));
values.add(new Entry(6, 2f));

LineDataSet dataSet = new LineDataSet(values, "");
dataSet.setLineWidth(2f);
dataSet.setColor(Color.BLUE);
dataSet.setCircleColor(Color.BLUE);
dataSet.setDrawCircleHole(false);
dataSet.setDrawValues(false);

ArrayList<ILineDataSet> dataSets = new ArrayList<>();
dataSets.add(dataSet);

LineData data = new LineData(dataSets);
mChart.setData(data);
mChart.invalidate();
}

private String getPastDate(int daysAgo) {
DateFormat dateFormat = new SimpleDateFormat("M/d", Locale.ENGLISH);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, -daysAgo);
Date date = calendar.getTime();
return dateFormat.format(date);
}
}
xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/title_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="最近一周消费情况"
android:textSize="18sp"
android:textStyle="bold"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp" />

<com.github.mikephil.charting.charts.LineChart
android:id="@+id/line_chart"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_below="@id/title_textview"
android:layout_marginTop="16dp"
android:padding="16dp" />

</RelativeLayout>

三:具体属性

以上的代码是没有注释,理解相对不易:

详细属性参看:AndroidMPChart之LineChart详细总结 - 简书 (jianshu.com)

标签:layout,实现,false,mChart,add,折线图,new,android
From: https://www.cnblogs.com/JIANGzihao0222/p/17338538.html

相关文章

  • XMLHttpRequest实现异步请求
    XMLHttpRequest基本概念XMLHttpRequest是一种用于在Web浏览器和服务器之间进行异步数据交换的技术。它可以在不重新加载页面的情况下向服务器发送HTTP请求,接收和处理来自服务器的响应,并更新网页的部分内容。XMLHttpRequest也被称为XHR,它是一种在Web开发中常用的JavaScriptAPI。......
  • 学习十大排序算法(1)——选择排序【实现方法c语言】
    十大排序算法第一节——选择排序复制代码直接滑到最后!!!选择排序就是找到(最大或者)最小元素,放到最开始的位置,然后就是在没有排序的序列中找到最小的排在已经排好的序列之后,直至没有排数列排完。(自己的理解)大概解释代码其中的细节:第6行中的sizeof的用法是求出括号里面......
  • 微信小程序使用canvas2d实现拼图游戏
    根据周文洁微信小程序开发实战编写,但是微信更新了canvas接口,按照书上写的已经不能使用了。目录 改进后如下:app.wxss:1.container{2height:100vh;3color:#E64340;4font-weight:bold;5display:flex;6flex-direction:column;7align-i......
  • 单链表的实现
    链表的概念我们知道顺序表的储存方式是一片连续的空间里面储存数据而链表就不一样了,从这个图我们可以看到在一个链表里面有两个储存空间的部分,一部分是用以储存我们的数据,而另一部分储存的是一个结构体的地址,而这个地址指向的空间里面也有两个部分的储存空间用处和上面的一样,直到最......
  • ONVIF网络摄像头(IPC)客户端开发—最简RTSP客户端实现
    前言:网上对于RTSP协议客户端的表述和实现非常不清晰,在实际使用中,FFMPEG和live555这些软件已经实现了RTSP客户端和服务端的所有功能,但是它们并没有将RTSP协议独立出来,通过看live555或是FFMPEG这些第三方库的源码来学习rtsp协议还是非常吃力。这里根据协议自己现实一个RTSP客户端程......
  • linux环境C语言实现:h264与pcm封装成mp4视频格式
    前言H.264是压缩过的数据,PCM是原始数据,MP4是一种视频封装格式。实际H.264与PCM不能直接合成MP4格式,因为音频格式不对。这里需要中间对音频做一次压缩处理。基本流程为:将PCM音频数据压缩成AAC格式音频数据,再将AAC与H.264合成MP4视频格式。(一)PCM压缩为AAC格式直接上代码,接口函数......
  • linux环境C语言实现:h264与pcm封装成AVI格式
    ​前言拖了很久的AVI音视频封装实例,花了一天时间终于调完了,兼容性不是太好,但作为参考学习使用应该没有问题。RIFF和AVI以及WAV格式,可以参考前面的一些文章。这里详细介绍将一个H264视频流和一个2通道PCM音频流封装成一个AVI格式的视频文件。测试过可以在暴风,迅雷和VLC播放器上......
  • linux环境C语言实现:h265与pcm封装成AVI格式
    ​前言不知道是处于版权收费问题还是什么原因,H265现在也并没有非常广泛的被普及。将h265数据合成AVI的资料现在在网上也基本上没有。使用格式化工厂工具将h265数据封装成AVI格式,发现它在封装的时候其实是对数据进行了一个装换,转成了FMP4格式。正文因为是在嵌入式设备中使用,所......
  • 图与网络——中国邮递员问题的R实现
    中国邮递员问题是邮递员在某一地区的信件投递路程问题。邮递员每天从邮局出发,走遍该地区所有街道再返回邮局,问题是他应如何安排送信的路线可以使所走的总路程最短。这个问题由中国学者管梅谷在1960年首先提出,并给出了解法——“奇偶点图上作业法”,被国际上统称为“中国邮递员问题......
  • Android安全检测 - 发送隐式广播风险
    这章来学习“发送隐式广播风险”,这个风险和动态注册Receiver风险有呼应之处,可以结合起来一起看。一、漏洞原理隐式广播是指未指定接收方(接收的范围),在发送广播的过程中所有的APP均能够接收到这个广播,那么就会存在广播被拦截的风险,若发送的广播携带数据那么就存在数据泄漏的风险,若......