一个简单的安卓平台下的备忘录

背景

之前已经介绍了不少的控件(TextView和ListView等等)以及开发中最常见的组件(Activity)(Service的权重在我心中没有Activity重要,因为曾经尝试过没有Activity启动App,这是不可行的,看底层代码就知道启动过程是从Activity开始的)。

基础的知识已经知道了,难免想要上手一个项目,这里开发一个记录备忘录的小项目。该项目,可以说“麻雀虽小,五脏俱全”,除了数据库,网络这方面没有涉及,其他都有应用。由于这是一个纯本地存储的项目,备忘录内容云同步未涉及。(后续考虑添加)

创建一个项目

首先,创建一个新项目(Memo,包名任意),一路默认(安卓入门系列01介绍了)。Gradle编译完成后,尝试虚拟机运行。接着,我们修改基础配置。可以看到默认的这个界面效果,很难受的就是这个顶部的bar,不需要,我需要自定义的topbar,所以去掉它。(前面博客提到两种方法,这里修改parent)

代码的封装

在我个人的开发经历中,对封装的要求比较高,我不喜欢过多代码的堆砌,尤其是这类业务代码,所以函数或者类,接口的封装在开发过程中是不可或缺的。

首先,写一个常用的topbar,后面多次使用。 这个bar使用的是design包里面的AppBarLayout布局和Toolbar控件,需要添加依赖。

然后,在activity_main.xml添加如下,效果显著。

<FrameLayoutadroid:layout_width="match_parent"adroid:layout_height="46dp"><include layout="@layout/topbar"></include>
</FrameLayout>

具体编码实现界面效果和业务逻辑

这部分本来是想要详细讲述布局和代码实现,包括本地存储的一些基础操作,然而考虑到个人时间和精力,要将即使是这样的一个小项目用文字描述细致,对我而言有些太难了,所以后续的内容只能大致提一下思路,具体的可以到GitHub下载我的源码看。(有详细备注)

  • 开发方法

    • 采用敏捷开发策略
    • 采用快速原型开发方式(优先完成基础功能,再进一步优化)
  • 配置文件
    • 第三方依赖添加

      • ‘com.getbase:floatingactionbutton:1.9.0’

        • 浮动窗口
      • ‘com.quinny898.library.persistentsearch:library:1.1.0-SNAPSHOT’
        • 搜索框
      • ‘com.baoyz.swipemenulistview:library:1.3.0’
  • 不完善之处
    • 本app的开发参考几个开源项目的理念和代码设计
    • 首页每一项之间预先构想的排序,最后由于时间没有实现
    • 本app界面太过平淡
  • 改进之处
    • 国内的很多记事本类型App是没有内部搜索,一般是集成到桌面的搜索功能里,而很多用户不清楚这个设定或者不喜欢,我把这个功能设计在备忘录主页

补充说明

项目的GitHub仓库地址如下,欢迎star或者fork。下面几张图,是编译完成的安卓应用实际的运行截图。

安卓入门系列-09一个实战小项目(备忘录Memo)相关推荐

  1. Vue快速入门(附实战小项目:记事本、天气预报、音乐播放器)

    文章目录 一.前言 二.Vue.js安装 三.初始化Vue项目 四.项目目录解析 五.Vue核心指令 1.插值表达式 2.v-text 3.v-html 4.v-on 5.计数器实战 6.v-show ...

  2. 【敬初学者】Python基础学完了,该怎么知道自己学的怎么样呢?十个经典实战小项目附源码

    前言 1.街霸游戏 1.1 KO街霸 程序完整源码 程序的输出界面 1.2 春丽VS巴洛克 参考源码 2.猜谜游戏 2.1简单的猜数字游戏 项目要求 参考源码 2.2 进阶的猜姓名游戏 项目要求 参考 ...

  3. 我用Python把抖音上的美女图片转字符画,期望的AI目标更进一步【机器学习算法实战小项目,k聚类算法图片转化字符画】

    大家好,我是辣条. 最近在学习算法,今天给大家带来一个机器学习实战小项目 项目效果展示 学习目标 1.cv2转换图片数据  2.numpy提取图片矩阵数据  3.k均值算法获取图片的分类 工具使用 开 ...

  4. libhv tcp实战小项目

    libhv Tcp小项目实战 一.概述 1.包头 2.心跳 3.任务队列 二.包头 2字节 2字节 4字节 4字节 2字节 1字节 1字节 起始标志 版本号(N) Command(命令ID) 消息体长 ...

  5. SparkSQL实战小项目之热门商品top3

    SparkSQL实战小项目之热门商品top3 一.说明及需求分析 二.准备测试数据 三.思路分析 四.编码实现 五.验证结果 一.说明及需求分析 软件及环境: centos7 + hive-2.3.3 ...

  6. SAP PM 入门系列11 - 一个维护通知单只能创建一个维护订单?

    SAP PM 入门系列11 - 一个维护通知单只能创建一个维护订单? 在SAP系统里,执行事务代码IW34,输入Notification号码100314924,以及Order type ZM03,试图 ...

  7. 我的第一个MFC小项目(4)之 位图转换(续)

    非常感谢Imageshop的指正,代码有修改,主要是: 计算8位位图像素位使用了更高效的整点运算: 去除多余的变量检测. 求网友们支招:在32位位图中有Alpha值,在转换成8位灰阶位图的时候可以直接 ...

  8. python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源)

    python+opencv别踩白块儿游戏辅助,一天一个opencv小项目(已开源) 见链接

  9. 我的第一个JDBC小项目

    我的第一个JDBC小项目 引言:以下都是个人学习中的一些总结,本人能力有限,其中存在很多错误与不足,还请阅读者斧正.!并非教程!!并非教程!!并非教程! JDBC是Java DataBase Conn ...

最新文章

  1. 随笔2:关于linux和python
  2. 阿里云高级总监谈超大规模超高性能分布式快存储系统
  3. 若依前后端分离版实现基于el-tree实现选中部门树节点同步选中多选框的操作
  4. 【翻译】Keras.NET简介 - 高级神经网络API in C#
  5. 紫光物联linux登录账号,紫光展锐打造操作系统生态,赋能万物互联智能时代
  6. SweetAlert – 替代 Alert 的漂亮的提示效果
  7. 计算机控制系统视频关守平,国家级精品课《计算机控制系统》课程建设研讨会顺利召开...
  8. Maven学习总结(53)——利用Maven插件构建镜像进行持续交付中的版本号管理
  9. 计算机网络---UDP协议与TCP协议
  10. 2017CCPC哈尔滨 F:Permutation(构造)
  11. 链栈判断回文 java_C语言链栈判断回文
  12. event.srcElement 说明 方法 技巧
  13. json 字符串和json对象之间相互转换
  14. yum安装mysql和mysql源,配置mysql
  15. Win10 cmd禁用笔记本自带键盘
  16. Vue文字走马灯(文字轮播)组件
  17. 东方财富:资金流向表爬虫
  18. 将个人微信公众号变成查券返利机器人完美教程分享
  19. VBS奇葩操作 “我是猪”
  20. 算法 319. 灯泡开关 python

热门文章

  1. 数据库-日期计算-获取年月日
  2. 使用ThreadLocal来解决问题
  3. Zuul简介及代码示例
  4. 设计模式之_动态代理_02
  5. java file 下载文件_java下载文件的几种方式
  6. oracle or使用速度快马_使用mysqld_exporter监控MySQL并展示数据
  7. Tomcat 下构建 Web 应用时,常犯的一些通用错误
  8. 210314阶段三VS使用Linux 的sqlite3 API
  9. POJ 3259 Wormholes【最短路/SPFA判断负环模板】
  10. LNMP部署(分享十七)