项目要求:
项目完成情况:
- 主功能实现:笔记的展示与全体笔记的删除。
- 分支功能实现:笔记的添加,单个笔记的删除与加密,最重要的是可以获取手机本地相册和授权相机进行拍照。
- 分支功能实现:弹出菜单实现,点击设置按钮修改密码功能
注:地理位置将在007note2.0中由小灰灰实现。
功能实现详解:
我在三人小组中参与了主页面添加笔记功能的构建,单独完成了主页面的全部删除功能以及edit页面的单独删除功能,在之后添加了加密功能,完成弹出菜单以及修改密码操作。
重点讲讲我单独做出那几个功能。
删除功能:
首先是设置在主页的全部删除功能:
在上述代码中,我利用菜单的响应事件,根据菜单中的item的id来判定响应事件,利用switch的优势,判断触发的事件是不是全局删除。如果是,代码继续执行。
定义一个文本类型变量et保存需要输入的暗号密码,输入暗号后,点击OK进入判断,如果暗号符合,则进行数据库数据删除操作,暗号不符合则执行fail方法,提示密码错误,然后再关闭对话框。
再者,是edit页面的单独删除功能:
在EditActivity中,我仍然是用菜单的响应事件,根据菜单中的item的id来判定响应事件,利用switch判断触发的事件是不是单个记录的删除。
确定要删除这条记录时,传mode=2和这条记录的id到MainAcitivty中的接收方法onActivityResult中去。
那么MainActivity就对returnmode==2的情况进行操作,对已传回id的那条记录进行数据删除操作。
加密功能实现:
加密功能的思路:首先我们确定一下加密需要应用到哪个地方,第一,在首页点开加密记录的时候需要一个密码验证;第二,在首页全部删除功能应用的时候应该进行密码验证;第三,在修改密码的时候会验证一下旧密码。
然后考虑这个功能具体怎么实现,一开始,我想创建两个独立的数据库,创建两个主页面存放两个独立的列表,在主列表里面放不需要加密的记录,在保密界面列表存放需要加密的记录,然后在两个页面的menu上面放一个转换页面的按钮,点击按钮就会跳转页面,在从主页面往保密页面跳转的时候利用一个dialog进行密码输入和判断。但是最后这个想法在我始终捋不清两个数据库和活动的发射之后破产,历时两天挣扎。
思路更改:我就在edit编辑页面的menu上面设置一个保密状态转换的按钮,就是那个伞型的按钮,点一下就会将正在编辑的记录转为保密状态,在想要点开这条记录的时候就需要在弹出的dialog中输入正确的密码。
那么我就想到在每条记录中多加入一个属性,用来判断这条记录的保密状态,于是,我定义了一个flag变量,如下面代码所示:
其实这里flag应该设置为布尔值的,但是搞成数值也不大错,,,没有默认值。
来看看具体实现的代码:
这里我用了onItemClick点击事件来判断点击的是第几条记录,然后获取这条记录的flag值,如果flag值为零,那么就用intent.putExtra先EditActivity传值,重要的是mode值为3,表示这次是已经创建过了的记录的再次打开,且flag仍为0,进行跳转到edit页面。
如果这条记录已经为改变成保密状态了,那么flag==1,验证输入密码的正确性,如果正确,就进行传值与跳转,但是flag传过去的值就为1。如果密码错误,就弹出一个dialog提醒一下密码错误。
这一段就是在edit页面完成的一个保密状态的转换,没有太过优化,主要就是改变一下这条记录的flag值,是1就变0,是0就变1。没什么值得说的。
加密差不多主要就是这些了,下一个。
弹出菜单
首先在MainActivity里面声明了很多组件工具,参考了别人的代码结构。
然后是一大堆我看不懂的渲染代码,
这里要注意,一共是有两层layout弹出了一个customView,一个coverView,第一层就是我们需要的弹出的菜单,第二层是一个衬托第一层的蒙版。
再来一个经典的showPopUpView将主弹窗的宽度设置为屏幕的70%,营造弹窗的效果,让主弹窗在蒙版的上面防止蒙版遮挡,将id为setting_img和setting_text的组件设置点击事件,调用我设置的dialog方法。
这个dialog方法就是用来更改密码的,可以输入old_code和new_code,如果旧密码验证正确,那么就改变code,调用success方法来提醒修改成功,验证失败会调用fail方法提醒密码错误。
好了都说完了,总结一下,这个考核项目我们小组除去地理位置获取(那个授权出了问题,还在解决)一共用时5天完成要求的功能,其余时间都用来学JavaScript,,,简简单单,也都是从零开始学安卓,靠着一点Java基础,一点点吃透别人的代码,转化成自己的代码。
完结撒花。