记账APP:小哈记账5——记账首页页面的制作(2)

news2025/1/11 9:08:08

项目介绍:

        小哈记账是一款用于记账APP,基于Android Studio开发工具,采用Java语言进行开发,同时使用litepal和阿里云数据库进行数据的增删查改,以图标的形式在App的界面上显示。App可以清晰显示收支情况,并以图表的形式展示每月收支情况;同时可以记录消费用途,项目能够精确到每一个款项的收入支出时间、结余并且可以设置每月的预算。超出预算提醒,并且有每周,每月及每年的账单统计,较为清晰明确帮助用户分析自己当前的支出和收入。同时拥有用户登录、注册、修改头像等功能。

        本项目中使用到的技术:LitePal数据库,阿里云RDS数据库,MPAndroidChart图表库,部分自定义控件等。

        支持Android5.0以上版本。

        本文将介绍小哈记账的首页页面制作。

 效果图:

源代码:

        本篇文章将主要介绍MPAndroidChart折线图的使用。

        首先初始化折线图,首先new一个LimitLine实例(警戒线)用于存放每日预算值,在折线图中以蓝色标出。然后调用LCaddData()方法(代码见下方)为图表设置数据。

        main_LineChart调用的方法为一些折线图的样式参数设置,详情可见MPAndroidChart官网。

        接下来通过xAxis和yAxis实例分别设置x轴和y轴,更多设置参数见官网。

        最后通过main_LineChart.animateXY()设置了一个显隐的动画。

    /**
     * 初始化折线图
     * */
    private void initLineChart() {

        LimitLine limitLine = new LimitLine(Float.valueOf(String.valueOf(ys_money/dayOfMonth)),"每日预算");
        limitLine.setLineWidth(1);
        limitLine.setLineColor(Color.parseColor("#009bff"));
        limitLine.setTextColor(Color.parseColor("#009bff"));
        limitLine.setTextSize(10f);

        LCaddData();

        main_LineChart.getDescription().setText("");//去掉右下角英文
        main_LineChart.getXAxis().setDrawGridLines(false);//是否画x轴背景线
        main_LineChart.getAxisLeft().setDrawGridLines(false);//是否画y轴背景线
        main_LineChart.setTouchEnabled(true);//是否可以触摸
        main_LineChart.setDragEnabled(true);//是否可以拖拽
        main_LineChart.setScaleEnabled(true);//是否可以缩放


        Legend legend = main_LineChart.getLegend();//获取图例管理器
        legend.setEnabled(false); //不启用图例

        ValueFormatter formatter = new ValueFormatter() {
            @Override
            public String getAxisLabel(float value, AxisBase axis) {
                return lineChartDay.get((int) value-1);
            }
        };

        XAxis xAxis = main_LineChart.getXAxis();
        xAxis.setAxisMaximum(dayOfMonth);
        xAxis.setAxisMinimum(1);
        xAxis.setValueFormatter(formatter);
        xAxis.setLabelCount(dayOfMonth,false);//x轴标签数量
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//x轴位置
        xAxis.setAvoidFirstLastClipping(false);//设置X轴避免图表或屏幕的边缘的第一个和最后一个轴中的标签条目被裁剪

        YAxis yAxis = main_LineChart.getAxisLeft();
        yAxis.setAxisMinimum(0);
        yAxis.addLimitLine(limitLine);

        YAxis yAxisR = main_LineChart.getAxisRight();
        yAxisR.setEnabled(false);

        String thisDate = String.valueOf(year+"年"+month+"月");

        MyMarkerView myMarkerView = new MyMarkerView(this,main_LineChart,thisDate,list_sr,list_zc, "month");
        main_LineChart.setMarker(myMarkerView);

        main_LineChart.animateXY(1200,1200);//设置动画

    }

LCaddData()方法,通过lineData实例获取到数据,通过setData()方法将数据设置到折线图中。

代码如下:

/**
     * 为图表添加数据
     * */
    private void LCaddData(){
        for(int i = 1; i <= dayOfMonth; i++){
            list_zc.add(new Entry(i,Float.valueOf(String.valueOf(lineChartMoney_zc.get(i-1)))));
            list_sr.add(new Entry(i,Float.valueOf(String.valueOf(lineChartMoney_sr.get(i-1)))));
        }

        lineDataSet_zc = new LineDataSet(list_zc, "支出");
        lineDataSet_zc.setDrawValues(false);//不显示数值
        lineDataSet_zc.setCubicIntensity(0.3f);
        lineDataSet_sr = new LineDataSet(list_sr,"收入");
        lineDataSet_sr.setDrawValues(false);//不显示数值

        lineDataSets.add(lineDataSet_zc);
        lineDataSets.add(lineDataSet_sr);

        LineData lineData = new LineData(lineDataSets);


        main_LineChart.setData(lineData);

        lineDataSet_zc.setDrawCircles(false);//不显示圆点
        lineDataSet_zc.setHighLightColor(Color.parseColor("#009bff"));//高亮线颜色
        lineDataSet_zc.setColor(Color.parseColor("#20a162"));//折线颜色
        lineDataSet_zc.setFillAlpha(50);//阴影透明度
        lineDataSet_zc.setFillColor(Color.parseColor("#20a162"));//阴影颜色
        lineDataSet_zc.setDrawFilled(true);//显示阴影
        lineDataSet_zc.setLineWidth(3);//折线粗细

        lineDataSet_sr.setDrawCircles(false);//不显示圆点
        lineDataSet_sr.setHighLightColor(Color.parseColor("#009bff"));//高亮线颜色
        lineDataSet_sr.setColor(Color.parseColor("#ee3f4d"));//折线颜色
        lineDataSet_sr.setFillAlpha(40);//阴影透明度
        lineDataSet_sr.setFillColor(Color.parseColor("#ee3f4d"));//阴影颜色
        lineDataSet_sr.setDrawFilled(true);//显示阴影
        lineDataSet_sr.setLineWidth(3);//折线粗细
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1037544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EfficientNet笔记

前言 论文 EfficientNet 是一系列卷积神经网络架构&#xff0c;它旨在在计算资源受限的情况下实现更好的性能。EfficientNet 的设计思想是在网络的深度、宽度和分辨率方面进行均衡的调整&#xff0c;以获得高效且高性能的模型。 以下是 EfficientNet 的主要特点和设计原则&a…

VS2022创建控制台应用程序后没有Main了,如何显示Main?

文章目录 问题描述原因解决方案简单的顶级语句试用计算器 其他文章 问题描述 用VS2022创建一个控制台应用后&#xff0c;没有名称空间和Main函数了&#xff0c;只有一个WriteLine&#xff0c;如下所示。 // See https://aka.ms/new-console-template for more information Co…

今日学习 Mybatis 的关联映射

关联映射的三种关系&#xff1a; 我们首先绘制一个简化的 E-R 图来表示三种关联关系。 上图表示的三种关系&#xff1a; 一对一&#xff1a;一个班主任只属于一个班级&#xff0c;一个班级也只能有一个班主任一对多&#xff1a;一个班级有多个学生&#xff0c;一个学生只属于…

全网最细讲解如何实现导出Excel压缩包文件

写在前面的话 接下来我会使用传统的RESTful风格的方式结合MVC的开发模式给大家介绍一下如何去实现标题的效果。 基本思路讲解 先从数据库中查询出一组人员信息记录&#xff0c;保存在List list中。遍历这个列表&#xff0c;对于每一个人员信息&#xff0c;将其填充到一个Excel…

小白学Python:提取Word中的所有图片,只需要1行代码

#python# 大家好&#xff0c;这里是程序员晚枫&#xff0c;全网同名。 最近在小破站账号&#xff1a;Python自动化办公社区更新一套课程&#xff1a;给小白的《50讲Python自动化办公》 在课程群里&#xff0c;看到学员自己开发了一个功能&#xff1a;从word里提取图片。这个…

pytorch安装教程

写在前面&#xff1a;配置pytorch着实有很多坑&#xff0c;不过最终结果算好的&#xff0c;话不多说&#xff0c;直接上干货。其中想要知道如何解决torch.cuda.is_available(&#xff09;返回false的&#xff0c;直接跳到步骤5pytorch安装。python版本至少是3.6及以上。 1、前…

API 设计/开发/测试工具:Apifox与怎么通过拦截器

目录 一、测试接口如何创建&#xff1f; 二、如何添加body和header&#xff1f; 三、如果项目设置的有拦截器&#xff1f; 四、拦截器概念&#xff1a; 4.1使用拦截器概念 4.2 先写一个配置类WebMvcConfig.java 4.3 AuthInitInterceptor拦截器中实现 一、测试接口如何创建…

Linux 内存workingset Refault Distance算法源码及源码解析

概述 内核mm子系统中有一个workingset.c实现了refault distance算法&#xff0c;发现网络逻辑介绍该算法的文章主要是复制自奔跑吧内核一书中的内容&#xff0c;均比较雷同&#xff0c;讲述的角度比较难以理解&#xff0c;我第一看到的时候琢磨了2天才明白&#xff0c;本文希望…

Python中使用EMD(经验模态分解)

在Python中使用EMD&#xff08;经验模态分解&#xff09;进行信号分解时&#xff0c;通常可以设置信号分解的数目。EMD算法的目标是将信号分解成多个称为“本征模态函数”&#xff08;Intrinsic Mode Functions&#xff0c;简称IMF&#xff09;的成分&#xff0c;每个IMF都代表…

调试(修复错误)

什么是一个软件bug&#xff1f; ● 软件错误:计算机程序中的缺陷或问题。基本上&#xff0c;计算机程序的任何意外或非预期的行为都是软件缺陷。 ● bug在软件开发中是完全正常的! ● 例如&#xff0c;现在我们存在数组&#xff0c;我们现在需要将这个数组颠倒排序 意外的结…

7.15 SpringBoot项目实战 【学生入驻】(上):从API接口定义 到 Mybatis查询 串讲

文章目录 前言一、service层 和 dal层方式一、Example方式方式二、Mybatis XML方式方式三、Mybatis 注解方式 二、web层 StudentController最后 前言 接下来我们实战【学生入驻】&#xff0c;对于C端学生端&#xff0c;一切交互开始于知道 当前学生是否入驻、是否有借阅资格&a…

【重新定义matlab强大系列十五】非线性数据拟合和线性拟合-附实现过程

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

人绒毛膜促性腺激素(HCG)介绍

人绒毛膜促性腺激素 HCG&#xff09;是妊娠期产生的一种肽类激素&#xff0c;由受孕后不久的胚胎产生&#xff0c;随后由合胞体滋养层&#xff08;胎盘的一部分&#xff09;合成。它的作用是防止卵子黄体的解体&#xff0c;从而维持孕酮的分泌&#xff0c;而孕酮对人类怀孕至关…

常用圆圈字符“圆圈字符替换器”

本文收录了162个常用圆圈字符&#xff0c;文内有“圆圈字符自动替换器”。 (本笔记适合熟悉字符串数据类型的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#x…

分享从零开始学习网络设备配置--任务3.6 使用默认及浮动路由实现网络连通

任务描述 某公司随着规模的不断扩大&#xff0c;现有北京总部和天津分部2个办公地点&#xff0c;分部与总部之间使用路由器互联。该公司的网络管理员经过考虑&#xff0c;决定在总部和分部之间的路由器配置默认路由和浮动路由&#xff0c;减少网络管理&#xff0c;提高链路的可…

PHP8中伪变量“$this->”和操作符“::”的使用-PHP8知识详解

对象不仅可以调用自己的变量和方法&#xff0c;也可以调用类中的变量和方法。PHP8通过伪变量“$this->”和操作符“::”来实现这些功能。 1.伪变量“$this->” 在通过对象名->方法调用对象的方法时&#xff0c;如果不知道对象的名称&#xff0c;而又想调用类中的方法…

互联网医院|互联网医院系统引领医疗科技新风潮

互联网的迅速发展已经改变了人们的生活方式&#xff0c;而医疗领域也不例外。近年来&#xff0c;互联网医院应运而生&#xff0c;为患者和医生提供了更便捷、高效的医疗服务。本文将深入探讨互联网医院的系统特点、功能以及未来的发展方向&#xff0c;为您展现医疗行业的新时代…

代码随想录算法训练营第23期day4| 24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II

目录 一、&#xff08;leetcode 24&#xff09;两两交换链表中的节点 二、&#xff08;leetcode 19&#xff09;删除链表的倒数第N个节点 思路 三、&#xff08;leetcode 160&#xff09;链表相交 四、&#xff08;leetcode 142&#xff09;环形链表II 思路 一、&#xf…

使用华为eNSP组网试验⑴-通过Vlan进行网络设备间通讯

在2019年学习网络的时候是从思科产品开始学的&#xff0c;那个时候接触了思科的6506、4506、3750、3550、2950&#xff0c;因为网络设备多&#xff0c;基本上是在多余的设备上直接操作&#xff0c;掌握后再上现场设备中去操作。当时使用了思科的模拟器CISCO Packet Tracer&…

驱动开发练习,platform实现如下功能

实验要求 驱动代码 #include <linux/init.h> #include <linux/module.h> #include <linux/platform_device.h> #include <linux/mod_devicetable.h> #include <linux/of_gpio.h> #include <linux/unistd.h> #include <linux/interrupt…