在build.gradle(:app)的dependencies里添加MPAndroidChart
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
setting.gradle里添加:maven { url "https://jitpack.io" }
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url "https://jitpack.io" }//添加的行
}
}
在layout布局文件里添加图表控件,折线图LineChart
<com.github.mikephil.charting.charts.LineChart android:id="@+id/lc_temchange" android:layout_width="match_parent" android:layout_height="match_parent" /> <!--该折线图就当表现温度变化吧-->
对布局文件对应的java文件添加修改
public class StatisticsFragment extends android.app.Fragment { private LineChart tempchart;
//创建一个temchart变量
//......省略其他代码......
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view=inflater.inflate(R.layout.fragment_statistics, container, false); //画温度折线图 tempchart=view.findViewById(R.id.lc_temchange);
tempchart.getDescription().setEnabled(false);//图表的文本描述,先不管这个设置成false吧 tempchart.getAxisRight().setEnabled(false);//禁用右轴 ArrayList<Entry> values1=new ArrayList<>(); values1.add(new Entry(3,27)); values1.add(new Entry(4,26)); values1.add(new Entry(5,27)); values1.add(new Entry(6,25)); values1.add(new Entry(7,24)); values1.add(new Entry(8,25)); values1.add(new Entry(9,25)); values1.add(new Entry(10,25)); LineDataSet set1=new LineDataSet(values1,"最近7小时室内温度变化"); set1.setMode(LineDataSet.Mode.CUBIC_BEZIER);//让折线图的曲线平滑 LineData data1=new LineData(set1); tempchart.setData(data1); return view; } }
效果
以上就可以在android上绘制出一个折线图了,但是大多数情况下坐标轴上需要显示信息,如x轴上显示时间,y轴上显示温度:
绘制方法:
//绘制温度变化折线图--周
private void drawwenduchart_week(){
tempchart.clear();
tempchart.setScaleEnabled(false);//禁止缩放
tempchart.getDescription().setEnabled(false);
tempchart.getAxisRight().setEnabled(false);
ArrayList<Entry> values2=new ArrayList<>();
values2.add(new Entry(1,25));
values2.add(new Entry(2,27));
values2.add(new Entry(3,28));
values2.add(new Entry(4,26));
values2.add(new Entry(5,25));
values2.add(new Entry(6,26));
values2.add(new Entry(7,24));
LineDataSet set2=new LineDataSet(values2,"过去一周室内温度变化");
set2.setMode(LineDataSet.Mode.CUBIC_BEZIER);//让折线图的曲线平滑
set2.setColor(getActivity().getResources().getColor(R.color.skyblue));//设置折线颜色
//设置x轴格式
XAxis xAxis=tempchart.getXAxis();
xAxis.setValueFormatter(new ValueFormatter() {
@Override
public String getAxisLabel(float v, AxisBase axisBase) {
int x= (int) v;
switch (x){
case 1:
return "11月17日";
case 2:
return "11月18日";
case 3:
return "11月19日";
case 4:
return "11月20日";
case 5:
return "11月21日";
case 6:
return "11月22日";
case 7:
return "11月23日";
}
return "";
}
});
//设置y轴格式
YAxis yAxis=tempchart.getAxisLeft();
yAxis.setValueFormatter(new ValueFormatter() {
@Override
public String getAxisLabel(float v, AxisBase axisBase) {
return Float.toString(v)+"℃";
}
});
//设置填充颜色
set2.setDrawFilled(true);
set2.setFillColor(getActivity().getResources().getColor(R.color.skyblue));
LineData data2=new LineData(set2);
tempchart.setData(data2);
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~