NotePad功能添加
NotePad功能添加
@author:065
NotePad是一个比较完整的安卓开发sample,只不过源码都比较旧了,这一次期中考试开始的时候我花了很久的时间让整个项目跑起来,顺便更新了一些方法的用法。
首先,阅读老师给的整个项目的初步分析(链接)大致了解了整个项目的结构
原文:“一共包含了6个类,其中4个Activity,一个ContentProvider,还有一个数据契约类。
· NotesList 应用程序的入口,笔记本的首页面会显示笔记的列表
· NoteEditor 编辑笔记内容的Activity
· TitleEditor 编辑笔记标题的Activity
· NotesLiveFolder ContentProvider的LiveFolder(实时文件夹),这个功能在Android API 14后被废弃,不再支持。因此代码中所有涉及LiveFolder的内容将不再阐述。
· NotePadProvider 这是笔记本应用的ContentProvider,也是整个应用的关键所在”
项目整理
在第一次导入项目的时候,无法在虚拟机上运行整个项目,大致问题都是出现在整个工程太旧,所以sync不成功.
1.minSdkVersion 11 cannot be smaller than version 14
一开始我按照AS的提示,将minSdkVersion
改成了14,如图:
2.sync成功后,在我创建了一个约束布局的xml后又报错了,发现无法在这个项目中使用约束布局。在简单思考一会后,我决定在自己经常使用的环境下重构整个项目。
build.gradle:
apply plugin: 'com.android.application'android {compileSdkVersion 29buildToolsVersion "29.0.3"defaultConfig {applicationId "com.x1nge.notepaddemo2"minSdkVersion 25targetSdkVersion 29versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}
}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'androidx.appcompat:appcompat:1.0.2'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test.ext:junit:1.1.0'androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
然后导入必要的代码文件,再进行一些小error的修复,就可以成功跑起程序了。
为NotePad每条记录显示时间
在阅读老师的文件说明的时候,老师针对这一功能的添加作了一个小小的提示(原文):
结合代码原来的注释:
不难发现这里就有现成时间可以使用,这里我使用修改时间。
1.在PROJECTION中加入我们要显示的时间:
/*** The columns needed by the cursor adapter*/private static final String[] PROJECTION = new String[] {NotePad.Notes._ID, // 0NotePad.Notes.COLUMN_NAME_TITLE, // 1NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE, // time};
2.相应的,添加要装配的数据:
// The names of the cursor columns to display in the view, initialized to the title columnString[] dataColumns = { NotePad.Notes.COLUMN_NAME_TITLE , NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE } ;// The view IDs that will display the cursor columns, initialized to the TextView in// noteslist_item.xmlint[] viewIDs = { android.R.id.text1,R.id.time };
3.在这里我们把要显示的文本放在标题的下方:
<TextViewandroid:id="@+id/time_title"android:layout_width="match_parent"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:text="@string/time_title"android:paddingLeft="5dip" /><TextViewandroid:id="@+id/time"android:layout_width="match_parent"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceSmall"android:paddingLeft="5dip" />
在这里源码所用的一个方法已经过时了,根据AS提示,将它修改成新的方法:
Cursor cursor = getContentResolver().query(getIntent().getData(), // Use the default content URI for the provider.PROJECTION, // Return the note ID , title and time for each note.null, // No where clause, return all records.null, // No where clause, therefore no where column values.NotePad.Notes.DEFAULT_SORT_ORDER // Use the default sort order.);
这样就很轻松地完成了整个时间的显示,但是会发现显示的时间戳,一般来说我们见到的都是显示一个具体的时间,所以这里要把时间戳转换成Date型数据。
首先import所需要的包:
import java.text.SimpleDateFormat;
import java.util.Date;
在NotePadProvider.java中,我们修改这一部分:
// Gets the current system time in millisecondsLong now = Long.valueOf(System.currentTimeMillis());SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = sdf.format(new Date(Long.parseLong(String.valueOf(now))));
再将put的参数由now改成我们定义的time
在NoteEditor.java中,我们在update方法中也修改时间的类型:
// Sets up a map to contain values to be updated in the provider.ContentValues values = new ContentValues();Long now = Long.valueOf(System.currentTimeMillis());SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time = sdf.format(new Date(Long.parseLong(String.valueOf(now))));values.put(NotePad.Notes.COLUMN_NAME_MODIFICATION_DATE, time);
大功告成看下成果:
添加搜索框
安卓开发中有一个搜索框的组件SearchView,我们可以根据这一组件来构建搜索框。按照老师上课的提示,我们把这个搜索放在菜单上,并且点击后弹出新的页面。
1.画一个搜索的视图:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/btn_back"android:layout_width="66dp"android:text="
NotePad功能添加相关推荐
- notepad++功能简介
Notepad++一些好用的特性 [notepad++简介] Notepad++是旨在替代Windows默认的notepad而生,比notepad的功能强大很多很多. (1)Notepad++的版本: ...
- 将自定义功能添加到Spring数据存储库
Spring Data非常方便,并且避免了样板代码,从而加快了开发速度. 但是,在某些情况下,注释查询不足以实现您可能想要实现的自定义功能. 因此,spring数据允许我们向Spring数据存储库添加 ...
- CAD将未显示在工具栏中的功能添加到工具栏中——以QLEADER为例
问题描述 CAD将未显示在工具栏中的功能添加到工具栏中--以QLEADER为例 问题解决 这时我们可以选择视图→工具栏. 在下拉框中选择标注 将其拖动至标注工具栏 最后点击确定即可.
- win10可选功能添加失败解决方法
解决win10可选功能添加失败方法 1.检查本机是否禁用系统更新(不包含注册表关闭的系统更新功能) 使用快捷键 windows+R 打开运行命令,输入services.msc进入服务面板,如图所示: ...
- android方法中添加 N,Android N 新功能 - 添加快速设定
Android N version 其中一个功能,就是允许三方app可以添加自己的快速设定,到系统的下拉设定中,方便用户快速打开关闭某些功能. 废话不多说,直接上代码来讲解. 创建一个class,继承 ...
- mysql添加映射模块_iis7.5中让html与shtml一样支持include功能(添加模块映射)
刚开始弄得时候,发现了很多错误,其实很简单,参考shtm原来的设置就可以了 前提条件: ServerSideIncludeModule的安装: 在安装iis的时候选择上该服务("在服务端包含 ...
- webui 通过提示词矩阵的文本框功能添加负面标签
众所周知使用该功能可以添加很多行tag,脚本会解析一行中所有tag内容,逐行生成图片 默认每行输入是按照正咒的形式输入的,跑的多了,出现了很多一个脑袋两个身体之类的怪东西,通过添加负面标签可以一定程度 ...
- ios绘图_使用Pencilkit轻松将绘图功能添加到ios应用
ios绘图 The PencilKit framework was introduced by Apple in iOS 13. It gives developers the ability to ...
- antd vue实现日历功能——添加放假时间功能——基础积累
最近再写后台管理系统时,遇到一个需求,就是需要写一个日历,然后添加放假时间的功能. 需要实现的功能有: 日历表头需要设置为当前年份的前后两年,比如今年是2022年,则年份下拉中时间为 2021.202 ...
最新文章
- 天梯赛 L1-009 N个数求和 (20 分)
- Github 简明教程 - 添加远程库
- java环境变量javac不能成功 win7_配置Java环境
- 2020 大厂研发岗薪酬排名出炉,看完我真的拖后腿了。。。
- mysql 5.6 没死_MySQL 5.6不删空用户的影响
- spring boot 尚桂谷学习笔记07 嵌入式容器 ---Web
- win7系统efi激活教程:无需efi win7激活工具解决无法分配盘符问题
- 扒一扒「清华系」的 AI 安防大佬们
- 50句形容美人的绝佳诗句,只看一眼,惊艳千年
- linux系统自动获取ip地址,Linux系统怎么自动获取ip地址用什么命令
- 计算机网络接口 rj45类型,网卡:网线接口类型(RJ45/BNC/AUIFDDI/ATM接口) -电脑资料...
- 逆思维:GAN不能生成什么?Seeing What a GAN Cannot Generate
- 树莓派系统安装 3.5寸LCD驱动安装 ssh远程链接
- 固态硬盘SSD使用随笔
- 解读 | 经典实验介绍之小心视崖,等你来了解哦
- 学习PLC LAD 梯形逻辑宝藏网站
- 耳朵上的艺术品,飞利浦圈铁真无线耳机JT60无敌了!
- 计算统计-Chap6 推断统计的蒙特卡罗方法 (3)蒙特卡罗方法
- java 只获取年月日_Java获取当前时间的年月日方法
- 个人学习笔记 ——【技术美术百人计划】图形 2.1 色彩空间介绍
热门文章
- 唐探、小说家、李焕英,哪一部贺岁档电影值得一看
- 奇说妙语百度云_陶杰
- UE4在Windows系统下交叉编译Linux环境
- 【Linux】ln: failed to create symbolic link ‘*.so’: Operation not supported
- 区块链存证原理与流程--基于xuperchain司法存证系统开发的学习笔记
- 解析亚马逊 SFTP中订单报文 EDI ANSI X12 格式
- 00_linux 设备驱动模型 2.6以后通用模型
- 怎样给Tab Control控件加上背景颜色或图片
- C/语/言/自/学/笔记
- 阿里VP贾扬清被曝将离职创业:建大模型基础设施,已火速锁定首轮融资