Android Studio实现课表

news2024/10/6 3:20:30

        本文章主要展示课表的实现,里面包含很多控件的用法,比如吐司Toast、通知Notification、ListView,数值选择器NumberPicker,SeekBar同editText的关联。抽屉导航栏

        还有一些其他的功能,比如InputFilter自定义的字符过滤器,SharedPreferences保存数据,自定义对话框,日期计算等

下面是课表的一些演示(华为P50E实机):

课表apk

课表源码 

 结构如下:

以下是课表中用到的各种技术:
抽屉导航栏:

采用androidx.drawerlayout.widget.DrawerLayout,在activity_main.xml中,DrawerLayout中第一部分使用了include导入main_content.xml文件中的内容,方便导航栏与主体内容分开编写。

androidx.drawerlayout.widget.DrawerLayout drawer_layout;
drawer_layout = findViewById(R.id.DrawerLayout);
drawer_layout;drawer_layout.openDrawer(GravityCompat.START);

可以打开抽屉导航栏

JAVA动态添加控件:

课程显示和左边时间轴的显示都是动态添加到网格布局中的,

course_gridLayout.addView(button, layoutParams);
course_gridLayout.addView(textView, layoutParams);

具体操作可以看代码。其他的一些,比如设置中时间轴的数目也同理

日期,数字选择和颜色选择等对话框:

程序使用了大量对话框与用户做交互,比如选择课程颜色时,除了预设的几种颜色以外,还可以点击左边的调色盘来RGB选色,这里的对话框用到了拖动条和输入文本框的回调,数字选择器也很常见。

SharedPreferences储存数据:

由于课表数据量不大,所以这里用到了SharedPreferences来存储数据,并且为了存储复杂的课程数据,写了Course_Data类进行字符串转换变量。

ListView的使用:

课表中在两处使用到了ListView,分别是创建课程的课程时间部分和抽屉导航栏中的所有课程,并写了两个适配器:Adapter_Course_Data和Adapter_Course,Adapter_Data简单,Adapter_Course_Data东西多,比较复杂。

通知:

仅有一个今日课程的简易通知,在MainActivity.java中, channel,notificationManager,这两个变量的相关函数就是。注意权限

正则表达式:

设置中,用户输入时间时,用到了String regex = "^([01]?[0-9]|2[0-3]):[0-5]?[0-9]$";来做正则匹配,就是0~23:0~59这么一个时间。

字符过滤器:

有两个字符过滤器,第一个Custom_Input_Filter.java用于添加课程时限制输入“;& | ”这三个字符,因为上面的字符串转换时用这几个作为分隔符,第二个Custom_Input_Filter_number.java用于在设置中,用户输入时间时限制(数字)与上面正则表达式配合。

亮、暗(深、浅)主题手动切换:

打开抽屉导航栏,上面有张AI绘制的图片,点击即可切换亮暗主题。主要就是用getDelegate().setLocalNightMode();函数

代码较长,不便粘贴,仅需1积分,自行下载。

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

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

相关文章

VSCode安装Go环境

VSCode安装Go 1.点击Go官网,根据自己环境下载go安装包,我这里为Windows 2.双击安装包,一直点击【Next】即可 VSCode配置Go基础环境 1.创建Go的工作目录: C:\Code\GoCode 2.创建Go的环境变量: GOPATH (1)右键【此电脑】,点击…

免费API-JSONPlaceholder使用手册

官方使用指南快速索引>>点这里 快速导览: 什么是JSONPlaceholder?有啥用?如何使用JSONPlaceholder? 关于“增”关于“改”关于“查”关于“删”关于“分页查”关于“根据ID查多个” 尝试自己搭一个?扩展的可能? 什么是JSONPlaceho…

【前端学习指南】开启 Vue 的学习之旅

🍭 Hello,我是爱吃糖的范同学 秋招终于结束了(拿到了比较满意的 offer🎉🎉🎉,后续也会有“面筋”系类给大家分享),目前我终于也有足够的时间和精力来完成我 23 年遗留下…

ubuntu 开机自报IP地址(用于无屏幕小车-远程连接)

目录 1.环境安装2.代码3.打包成可执行文件4.开启开机自启 1.环境安装 sudo apt-get install espeak #先安装这个库 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyttsx32.90 #再安装pyttsx3 pyinstaller pip install -i https://pypi.tuna.tsinghua.edu.cn/si…

【PXIE301-208】基于PXIE总线架构的Serial RapidIO总线通讯协议仿真卡

板卡概述 PXIE301-208是一款基于3U PXIE总线架构的Serial RapidIO总线通讯协议仿真卡。该板卡采用Xilinx的高性能Kintex系列FPGA作为主处理器,实现各个接口之间的数据互联、处理以及实时信号处理。板卡支持4路SFP光纤接口,支持一个PCIe x8主机接口&…

机器学习三要素与拟合问题

1.如何构建机器学习模型? 机器学习工作流程总结 1.获取数据 2.数据基本处理 3.特征工程 4.机器学习(模型训练) 5.模型评估 结果达到要求,上线服务,没有达到要求,重新上面步骤 我们使用机器学习监督学习分类预测模型的工作流…

c语言:去除最高分最低分,求平均值|练习题

一、题目 有10个裁判评分,去除最高分和最低分,求运动员的平均分。 如图: 二、思路分析 1、设置一个数组变量,用冒泡排序法排序 2、数组的首位和最后一位,就是最低分和最高分 3、数组的第二到n-1个,就是符合…

Python实现张万森下雪了的效果

系列文章 序号文章目录直达链接表白系列1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心http…

nodejs+vue+微信小程序+python+PHP的艺术展览馆艺术品管理系统-计算机毕业设计推荐

选择轻量级的关系型MySQL数据库存储数据。接着进行系统的需求分析、功能设计、数据库设计,最后进行编码实现。具体如下: 1)网站首页:艺术品浏览展示,艺术品作者线下。供会员浏览查看。 2)注册登录&#xff…

边缘智能网关在智慧大棚上的应用突破物联网大关

边缘智能网关在智慧大棚上的应用,是现代农业技术的一大突破。通过与农作物生长模型的结合,边缘智能网关可以根据实时的环境数据和历史数据,预测农作物的生长趋势和产量,提供决策支持和优化方案。这对于农民来说,不仅可…

总结js中遍历对象属性的方法

方法介绍 1、 forin循环:遍历对象自身的和原型链上的可枚举属性。 2、Object.getOwnPropertySymbols()方法:返回一个数组,包含对象自身的所有Symbol类型的属性。 3、 Object.getOwnPropertyNames()方法:返回一个数组&#xff0…

PDF控件Spire.PDF for .NET【安全】演示:修改加密PDF的密码

修改PDF文件的密码确实是一个理性的选择,尤其是当密码被某人知道并且您的PDF文件不再安全时。Spire.PDF for .NET使您能够用 C#、VB.NET 修改加密 PDF 文件的密码。您可以修改所有者密码和用户密码,并设置访问 PDF 文件时的用户限制。现在请看修改加密PD…

将函数f转化为通用函数uf 实现多组数据本应多次调用函数f 现在可以一起一次调用通用函数uf np.frompyfunc(func,nin,nout)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将函数f转化为通用函数uf 实现多组数据本应多次调用函数f 现在可以一起一次调用通用函数uf np.frompyfunc(func,nin,nout) [太阳]选择题 下列输出正确的是: import numpy as np f …

Volume Control 2

为游戏添加音乐和音效总是需要一些编码来设置一个系统来控制、显示和保存应用程序的音量设置。 音量控制的设计是为了立即为您设置这些内容,让您有更多时间专注于最重要的事情——制作出色的游戏! 在版本2中,我们对系统进行了重新设计,使其更加模块化、灵活,甚至更易于使用…

光伏逆变器MPPT的作用、原理及算法

MPPT是逆变器非常核心的技术,MPPT电压在进行光伏电站设计时一项非常关键的参数。 一、什么是MPPT? (单块光伏组件的I-V、P-V曲线) 上图中,光伏组件的输出电压和电流遵循I-V曲线(绿色)、P-V曲线(蓝色),如果…

文件监控-IT安全管理软件

文件监控和IT安全管理软件是用于保护企业数据和网络安全的工具。这些工具可以帮助企业监控文件的变化,防止未经授权的访问和修改,并确保数据的安全性和完整性。 一、具有哪些功能 文件监控软件可以实时监控文件系统的活动,包括文件的创建、修…

软件测试/测试开发丨Python闭包函数和计时器学习笔记

闭包函数 闭包的内部函数中,对外部作用域的变量进行引用闭包无法修改外部函数的局部变量闭包可以保存当前的运行环境 # 普通方法实现 def output_student(name, gender, grade1):print(F"新学期开学啦,学生{name}是{gender},他是{grad…

OpenCV-Python(21):轮廓特征及周长、面积凸包检测和形状近似

2. 轮廓特征 轮廓特征是指由轮廓形状和结构衍生出来的一些特征参数。这些特征参数可以用于图像识别、目标检测和形状分析等应用中。常见的轮廓特征包括: 面积:轮廓所包围的区域的面积。周长:轮廓的周长,即轮廓线的长度。弧长&…

Python流星雨完整代码

文章目录 环境需求完整代码详细分析环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.net/arti…

CSS 向上扩展动画

上干货 <template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container&q…