Android 办公自动化(Office Automation)

这篇博客详细介绍了如何在Android平台上实现办公自动化,包括环境配置、登录注册、首页功能、日志查看、审批流程、考勤管理和公告查看等。作者强调了9patch图片的使用、页面布局设计、业务逻辑处理以及与服务器的交互。此外,还提到了Android相关的问题和整体架构图。

APP 端:Android

app 端需求文档简述说明:

  1. app 端登录后,进入到首页界面,首页可以执行查看日志、查看审批、进行考勤、查看公告等操作。
  2. 首页,可以切换到通讯录以及我的界面。
  3. 通讯录,可以查看公司的部门结构以及部门成员信息。
  4. 我的,可以查看我的信息,修改个人信息。

环境配置

  1. Android Studio 。android-studio-ide-181.5014246-windows
  2. 夜神模拟器。
  3. Gradle 。‘com.android.tools.build:gradle:3.2.0’
  4. 谷歌浏览器。
  5. eclipse。Maven 。apache-maven-3.5.4-bin 。

Android Studio 创建项目

创建一个最低版本是 6.0 的Android 项目,夜神模拟器的最高版本是 Android 7.0.

开始编写代码。

登录注册
  1. 登录。
    在这里插入图片描述
  • 创建登录 LoginActivity 继承实现 Activity 。
  • activity_login.xml 设置页面布局。
    在这里插入图片描述

※ 页面设计方面

  • 整体页面布局采用的是相对布局(RelativeLayout)的布局样式。

  • 页面中的 Logo 设置 。使用 ImageView 控件加载一张图片,设置图片显示在居中的位置上。
    在这里插入图片描述

  • 9patch 图片(后缀名字是 .9.png 的图片)的使用。
    1、9patch 图片是 andriod app 开发里一种特殊的图片形式,文件的扩展名为:.9.png 。
    2、9patch 图片的作用就是在图片拉伸的时候保证其不会失真。我们使用 .9 图片,让图片在指定的位置拉伸和在指定的位置显示内容,保证图片的边边角角就不会出现失真。
    3、使用 9patch 的好处:整个图片是包裹着想要显示的内容的。如果没有使用 9patch 格式,仅仅充满控件背景而已。
    在这里插入图片描述
    在这里插入图片描述
    4、制作 .9.png 的图片需要注意这四条黑线具有不同的意义(使用的时候都要添加)。
    顶部与左边掌管伸缩:在水平拉伸(竖直)的时候,保持其他位置不动,只在这个点的区域做无限的延伸。
    底部与右边掌管内容:在水平拉伸(竖直)的时候,指定图片里的内容显示的区域。

  • Button 的按钮样式。
    android share 属性文件的使用。
    在这里插入图片描述
    在这里插入图片描述

  • 最后的两个按钮设计的比较简单了,页面的整体背景是白色的,所以设置按钮背景是白色的,字体是蓝色即可。
    在这里插入图片描述

※ 业务处理方面

本人习惯根据需求文档设计好展示页面,设计好页面后,根据页面的控件内容进行逻辑处理。

  • 暂不支持第三方登录。这里的第三方登录仅仅起到对称美化作用。
  • 登录逻辑,设置记住密码和自动登录的操作。这两项,在现在的 app 中都已经是默认执行了的,这里根据我自己的做法做出来的,如果有网络安全和信息泄露等安全方面问题的话,请留言给我。在首次登陆时,SplashActivity 的判断是没有自动登录和记住密码的 true 操作,则直接跳转到登录的界面,登录的时候判断是否勾选自动登录、记住密码的操作。
    1、SplashActivity 中的业务逻辑。
    在这里插入图片描述
    判断是否有记住密码操作,仅有记住密码操作则通过 SharedPreferences 文件中查询输入的账号与密码传到登录界面。仅有记住密码的操作时,才从SqlLite 数据库查询用户上次登录用户信息,查询到信息内容则跳转到首页。
    2、LoginActivity 中对按钮以及单选框执行监听。
    在这里插入图片描述
    根据单选框的选择情况进行设置,自动登录选择,则进行插入数据库的操作,可以将当前登录用户的信息存储到数据库中,也可以不存放密码等内容,存放登录凭证 token 。记住密码的选择,因为这里要区别出记住密码与自动登录的操作,我在记住密码操作上选择了使用 SharedPreferences 文件中,密码选择使用的 md5 加密的方式 , password + username + password 做为盐(salt)来保存密码。
  • 点击登录按钮执行的方法处理操作。
    在这里插入图片描述这里我没有使用 token 登录的方式,我采用的是 session 存储登录方式,设置 session 存储的时长为 15 天,通过请求的时候发送和获取 cookie 中 JSESSIONID 的内容。并且单独保存起来,登录的时候更新 session 内容即可。

  1. 注册。
  • 创建登录 RegisterActivity 继承实现 Activity 。
  • activity_register.xml 设置页面布局。
    在这里插入图片描述
    ※ 页面设计方面
    【EditText 设置输入框】对 EditText 使用了 shape 属性元素。shape 的存储内容存放到了 Android shape 的文件中。
    【Button】button 设置按钮的 shape 样式即可。
    ※ 业务处理方面
    1、点击注册按钮,携带着注册的信息,向后台发送请求。
    2、点击注册提交时,需要判断注册输入内容没有空的操作。并且清空输入框的内容,把焦点定焦到对应的 EditText 控件上。
    在这里插入图片描述
首页(HomeActivity)
  • 创建登录 HomeActivity 继承实现 Activity 。
  • activity_home.xml 设置页面布局。
    在这里插入图片描述
    ※ 页面设计方面
    页面上采用了FrameLayout include 的标签来执行点击切换页面的效果。中间增加了一条View 内容,这样显示出有分层。
    ※ 业务处理方面
  • 主界面点击返回按钮,确认后才推出系统 。
    在这里插入图片描述
    在这里插入图片描述
  • 为 页面设置新的 ActionBar 。
    在这里插入图片描述
  • 设置 Fragement 的界面切换 。
    在这里插入图片描述
    在这里插入图片描述
首页(MainFragment)
  • 创建登录 MainFragment 继承实现 Fragment。
  • fragment_main.xml 设置页面布局。
    在这里插入图片描述
    ※ 页面设计方面
    页面整体采用了 LinearLayout 的布局,每一个 Button 与 TextView 同时布局在 RelativeLayout 的内部,设置 TextView 相对于在 Button 下边,并水平居中。
    ※ 业务处理方面
    这里我图简单,仅仅设置了按钮的点击事件,应该设置 RelativeLayout 的布局点击事件,这样点击 Button 与 TextView 的时,都可以执行操作。
    在这里插入图片描述
日志(LogAllActivity)
  • 创建登录 LogAllActivity继承实现 Activity 。
  • activity_log_all.xml 设置页面布局。
    在这里插入图片描述
    ※ 页面设计方面
    页面看上去就显的特别的 low ,没有什么布局样式,日志包括日报、周报、会议纪要、月报四部分内容,最重要的是去写日志的功能。
    ※ 业务处理方面
    页面基本上都是点击事件触犯跳转页面的操作。重点说的是,点击写日志之后的自定义弹窗 AlertDialog 的内容啦。
    在这里插入图片描述
四种日志的查看界面

在这里插入图片描述
四种界面,举日报界面为例,统一采用了 ListView 的加载样式,并且设置了 ListView 为空时,显示 TextView 的内容。设置 ListView 子项的监听,点击子项可以查看更多详细的内容。
在这里插入图片描述

写日志的界面(NoteEditActivity)

在这里插入图片描述
之前使用准备使用的是 富文本编辑器的插件进行编辑操作,我这里仅仅是显示员工的日志内容,并不需要过多的样式操作。所以使用了两个 EditText 进行设置,并通过 fill_parent 的宽高使得页面不在空旷。
在这里插入图片描述

  • 保存的按钮时设置在 ActionBar 上边的。
    设置一个 menu 的布局(设置一个菜单布局)
    在这里插入图片描述
    创建行的 Menu 布局。android:showAsAction=“always” 用在Activity上,app:showAsAction=“always” 用在 AppCompatActivity 上。
    在这里插入图片描述
审批(ApprovalActivity)
  • 创建登录 ApprovalActivity继承实现 Activity 。
  • activity_approval.xml 设置页面布局。
    在这里插入图片描述
    ※ 页面设计方面
    主要负责界面的跳转,跳转到指定的界面,界面一共11 个按钮,按钮采用了添加前后设置图标样式。
    在这里插入图片描述
    ※ 业务处理方面
    主要是根据用户点击跳转到指定的界面上。
各种申请界面

(以加班申请为例,不在介绍其他界面信息)
在这里插入图片描述
在设计提交信息的时候,需要知道了解提交的信息都有哪些?这些内容是和后台衔接的,知道了要提交哪些信息,这样才能更好的去设计表单,之后提交表单上的信息,完成信息录入(申请的提交)
1、时间选择上。我采用的是 系统的时间弹窗 DatePickerDialog 。还可以查询这方面的插件。
在这里插入图片描述
下边这条使用的是 TimePickerView
在这里插入图片描述
在这里插入图片描述
2、单选框的监听事件。
在这里插入图片描述

查看我发起的申请

就是查询记录,然后显示在页面上的操作。重点是 ListView 的使用,以及适配器的运用。
在这里插入图片描述

我审批的界面

我审批的内容包括:我审批通过的,我还没有审批的。这里我才用的是动态的方式去加载执行审批组件,对审批通过和审批未通过的加以处理。
在这里插入图片描述
通过红色线的名称,区分出来这不是简单的 Activity 中的内容了,这是 AppCompatActivity 中带有的内容。具体用法如下:
在这里插入图片描述
由于我全文使用的都是 Activity 的内容,使用 AppCompatActivity 较少 ,所以在完成这个页面需要设置主题为 AppCompatActivity 的主题
在这里插入图片描述
这两个视图的存放数据界面,仍然是两个 ListView 作为主要内容的界面。这里不再细说。

考勤(MapActivity)
  • 创建登录 MapActivity 继承实现 Activity 。
  • activity_map.xml 设置页面布局。
  • 这里结合使用的是百度地图,百度地图的具体使用请参考 Android 定位SDK
    在这里插入图片描述
    ※ 页面设计方面
    主要有三部分内容,一部分是 ActionBar 的显示布局,用于按钮操作。中间内容显示的是百度地图,请在网咯状态良好的情况下使用百度地图。最下边是反馈当前位置与公司的距离,显示上班的打卡要求时间,以及现在的时间,更重要的是去点击按钮,能够进行签到的操作。
    1、自定义操作 ActionBar 。
    需要自定义菜单栏的内容。
    在这里插入图片描述
    通过重写 OnCreateOptionsMenu(Menu menu) 方法进行设置
    在这里插入图片描述
    紧接着,通过重写 onOptionsItemSelected(MenuItem item),设置菜单栏的点击事件。
    在这里插入图片描述
    2、百度地图的覆盖物,addOverlay();
    在这里插入图片描述
    3、考勤打卡。
    考勤打卡是具有严格要求的打卡方式。什么时间打什么样的卡,上班卡,下班卡,迟到卡,旷工卡,早退卡等等,都需要有严格的判断。
    本次使用的打卡判定比较简单。
    在这里插入图片描述
    获取规定的打卡时间。
    在这里插入图片描述
    设置上班的打卡规范。
    在这里插入图片描述
    设置下班的打卡规范
    在这里插入图片描述
    动态显示现在的打卡范围。
    在这里插入图片描述
    在这里插入图片描述
    上述操作每秒刷新的方法如下:
1、首先创建一个Handler对象
	Handler handler=new Handler();
2、然后创建一个Runnable对象
	Runnable runnable=new Runnable(){
	   @Override
	   public void run() {
	    // 再次调用此 Runnable 对象,以实现每两秒实现一次的定时器操作
	    handler.postDelayed(this, 2000);
	   }
	};
3、使用PostDelayed方法,两秒后调用此Runnable对象
	handler.postDelayed(runnable, 2000);	// 实际上也就实现了一个2s的一个定时器
4、如果想要关闭此定时器,可以这样操作
	handler.removeCallbacks(runnable);

※ 业务处理方面
1、ActionBar 加载,提供不同的展示数据。
2、百度地图的正常显示,以及覆盖物的增加。
3、数据反馈以及考勤签到。

公告(NoticeListActivity)
  • 创建登录 NoticeListActivity继承实现 Activity 。
  • activity_notice_list.xml 设置页面布局。
    在这里插入图片描述
    ※ 页面设计方面
    公告查询的这一方面没有什么特别之处,还是之前的方法,使用 ListView 去展现数据,通过Adapter 适配器重写 getView() 方法,完成子项的视图渲染,设置点击事件,查看具体的签到内容。
    ※ 业务处理方面
    公告自然有不同的一面。在登录成功的时候,我们回去检测公告网址上边是否有公告的存在,如果有则获取公告的内容并显示在 Android 的弹出窗中。【Android 抓取指定网页数据并显示(两种方法,一种获取(直接获取页面源码),一种解析(解析获取标签内容))】

网页有两种格式,一种是 XML;另一种是 HTML,现在使用 HTML 的居多。

1、通过网页请求直接获取网页源码。
在这里插入图片描述
2、使用解析器进行解析。
使用 jsoup 对 HTML 进行解析:使用 jsoup 对 HTML 文档进行解析和操作

在这里插入图片描述
当页面获取到指定网页中的内容是,可以通过 AlertDialog 的方式自动弹出界面,需要设置当前登录登录显示,不能够返回此界面时,还要发送访问请求。

通讯录(MaillistFragment)
  • 创建登录 MaillistFragment 继承实现 Fragment。
  • fragment_maillist.xml 设置页面布局。
    在这里插入图片描述
    ※ 页面设计方面
    页面比较简陋,仅仅一个 GridView 就完事。
    ※ 业务处理方面
    在这里插入图片描述
    这就要有新的界面与子项设置和数据传递。
    1、数据处理。
    数据需要刚一开始展现 MaillistFragment 页面的时候就需要加载数据,这样才能保证数据在 MaillistFragment 的显示,与数据的传递。
    在这里插入图片描述
    2、子项目的表现形式。
    在这里插入图片描述
    需要为子项目数据与界面表现添加适配器 (ArrayAdapter)。具体用法同 ListView 。
    在这里插入图片描述
    在这里插入图片描述
    3、点击子项目执行跳转页面。
  • 创建登录 EmployeeListActivity继承实现 Activity 。
  • activity_ employeeList.xml 设置页面布局。
    在这里插入图片描述
    ※ 页面设计方面
    页面分为两份,一部分用来展示部门的信息,另一部分则是用 ListView 展示用列表。
    ※ 业务处理方面
    主要是页面传来数据,在通过数据填充 ListView ,并对 LitView 设置点击事件。
    在这里插入图片描述
    依次向下执行,知道可以查看到员工的具体信息结束。
    要想还可以继续查询用户的详细信息。就需要通过点击 ListView 进入到新的界面。并为之进行数据处理。
我的(MyFragment)
  • 创建登录 HomeActivity 继承实现 Activity 。
  • activity_home.xml 设置页面布局。
    在这里插入图片描述
    ※ 页面设计方面
    布局内容整体上使用的是 RelativeLayout 布局,控件又在 LinearLayout 基础上(标签内),可以当做在 LinearLayout 的内容之上。总体上又分为三部分。顶部显示用户的信息,底部显示用户退出登录操作,中部便是用户的操作功能(查看个人信息、修改密码等等。)每一个 Button 前后增加了图片,具体大小设置需要到 Java 代码中去设置,暂不支持 xml 调节大小。
    在这里插入图片描述
    ※ 业务处理方面
    个人信息的显示,动态加载图片的内容,以及 TextView 显示内容,都是随着界面切换出现的,所以需要动态添加方法与布局样式。
  • 顶部的内容
    顶部主要是 一个 ImageView 和 五个 TextView ,布局要合理。
    在这里插入图片描述
  • 中部的内容
    这里则是个人信息的点击事件,触发修改状态,查看个人信息,编辑个人资料的内容。
    【修改状态】
    在这里插入图片描述
    在这里插入图片描述
    【查看全部信息】
    在这里插入图片描述
    【修改密码】
    在这里插入图片描述
  • 底部的内容
    退出登录的时候需要,清空登录验证等内容。
    在这里插入图片描述

PC 端:服务器

PC 端需求文档简述说明:

  1. 登录权限受限,只有人力资源部同事和部门经理能够登录。
  2. 发布公告,发布公告到手机端。
  3. 考勤信息,规定考勤规范,设置打卡内容。
  4. 审批与请求:发送各种请求。审批请求的处理。
  5. 部门管理。

环境配置

  1. Android Studio 。android-studio-ide-181.5014246-windows
  2. 谷歌浏览器。
  3. eclipse。Maven 。apache-maven-3.5.4-bin 。
  4. MySql 5.7 和 Navicat 。

创建一个 Maven 项目。

使用 Maven 结合 SSM 框架创建一个 WEB 项目。

开始编写代码

在这里插入图片描述
后台内容主要是操作数据库,为安卓提供数据,这里不再显示后台具体内容。提供主要的方法操作。项目整体目录结构如下:
在这里插入图片描述

Android Question。

  1. Android TextView 设置显示超过 n 行显示省略号。
    在这里插入图片描述
  2. Android ListView 适配器出错
    在这里插入图片描述
  3. xUtils 插件发送 POST 请求的 JSON 数据。
    在这里插入图片描述
  4. 在 编辑日志完成后,提交的时候显示一个保存日志的进度对话框是比较不错的选择。
    【方式一】
    在这里插入图片描述
    【方式二】
    在这里插入图片描述
    在这里插入图片描述
  5. OnTouch 方法监听触发两次的原因与解决办法。
    在这里插入图片描述
  6. ListView 不显示分割线。
    在这里插入图片描述
  7. Android 设置线程休息 10 秒。
    在这里插入图片描述
  8. 数据库查询操作建议如下:
    在这里插入图片描述
    在这里插入图片描述
  9. 百度地图配置错误 。一定要依照百度地图的官方的配置进行设置。我出错的位置如下:
    在这里插入图片描述
  10. Android 定位
    在这里插入图片描述
  11. Android 操作 cookie 。
    在这里插入图片描述
    通过 cookie 获取当前的 session ,并通过 如下方式判断 session是否过期。
    在这里插入图片描述
  12. 清除 Sharedpreferences 的内容。
    在这里插入图片描述
    在这里插入图片描述

整体架构图

我使用的是 xMind 操作的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

贴出源码:

留下联系方式,可以发源码。

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值