一个android记事本的学习过程记录! (一)
2019独角兽企业重金招聘Python工程师标准>>>
一 首先是这个记事本我想实现的几个功能!
1.记录文字;
2.记录图片;
3.可以记录视频;
4.可以查看已经记录的事件;
二 在知道了要实现的功能后就要开始进入设计UI 的部分了;
首先我们在主界面中,设计简单的几个控件,一个ListView用来显示已经记录的事件;三个Button分别对应文字,图片,视频的记事。
MainActivity.xml
设计完主界面后,开始写记录内容的界面,context.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageViewandroid:id="@+id/c_img"android:layout_width="250dp"android:layout_height="350dp"android:visibility="gone"/><VideoView android:id="@+id/c_video"android:layout_width="250dp"android:layout_height="350dp"android:visibility="gone"/><EditTextandroid:id="@+id/ettext"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1.00"android:background="@null"android:gravity="top"android:hint="有了记事本,生活真方便!" /><LinearLayout android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Button android:id="@+id/save"android:layout_width="wrap_content"android:layout_weight="1"android:layout_height="wrap_content"android:text="保存"/><Button android:id="@+id/cancle"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="取消"/></LinearLayout></LinearLayout>
这是记录三种不同类型的事件时,所使用的不同的界面;
那么主要的UI 界面就算完成了!
三 .界面完成以后就要开始完成功能的实现!
1.首先先完成主界面和几个的界面切换;
//实例化控件 private Button textButton,imgButton,videoButton;private ListView lv;//设置监听事件lv=(ListView) findViewById(R.id.list);textButton=(Button) findViewById(R.id.text);imgButton=(Button) findViewById(R.id.img);videoButton=(Button) findViewById(R.id.video);textButton.setOnClickListener(this);imgButton.setOnClickListener(this);videoButton.setOnClickListener(this);//使用Intent方法实现界面的切换public void onClick(View arg0){intent=new Intent(this,addContent.class);// TODO Auto-generated method stubswitch (arg0.getId()){case R.id.text:intent.putExtra("flag", "text");startActivity(intent);break;case R.id.img:intent.putExtra("flag", "img");startActivity(intent);break;case R.id.video:intent.putExtra("flag", "video");startActivity(intent);break;}}
通过使用Intent方法的putExtra方法将三个不同的参数值传递过去时,在context.java 中通过getIntent().getStringExtra("flag");方法得到传过的数据从而显示不同的界面和功能!
2. 接下来要实现在记录文字以后点击保存后的功能;开始创建数据库!
现在回忆一下关于数据库方面的知识,此处使用的是SQList数据库。关于SQList数据库的基本知识:
SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器
支持的数据类型:空值,整形,浮点,字符串,二进制等,数据库常用的类型都支持;
SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法,
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory),打开或创建数据库
insert(String table,String nullColumnHack,ContentValues values) 插入数据
delete(String table,String whereClause,String[] whereArgs) 删除数据
query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy) 查询语句
update(String table,ContentValues values,String whereClause,String[] whereArgs) 修改语句
execSQL(String sql) 执行一条语句有三个方法
4. SQLiteOpenHelper 这是一个辅助类,用于创建一个数据库,该类有三个方法,一个构造函数,一个create方法,一个更新数据库的方法!
3. 现在我们创建一个保存内容的数据库;
package com.example.hello_notes;import android.R.style;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;public class NotesDB extends SQLiteOpenHelper
{public static final String TABLE_NAME="notes";public static final String CONTENT="content";public static final String ID="_id";public static final String TIME="time";//后加入 文本和视频public static final String PATH="path";public static final String VIDEO="video";public NotesDB(Context context){super(context, "notes", null, 1);// TODO Auto-generated constructor stub}@Override//创建数据库!public void onCreate(SQLiteDatabase arg0){// TODO Auto-generated method stubarg0.execSQL("create table "+TABLE_NAME+"("+ID+" integer primary key autoincrement,"+CONTENT+" text not null,"+PATH+" text not null,"+VIDEO+" text not null,"+TIME+" text not null)");}@Override//更新数据库!public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2){// TODO Auto-generated method stub}}
在程序中把所有的字段单独定义,方便以后修改;在这个类中,生成一个notes的表,一个ID标示,一个记录文本内容,一个图片的路径,一个记录视频的路径的字段,还有一个记录时间的字段;
4.创建好数据库以后,我们要在主程序中实例化一个数据库;
//建立数据库
private NotesDB notesDB;
private SQLiteDatabase dbWrite;
在oncreate中实例化:
notesDB=new NotesDB(this);
dbWrite=notesDB.getWritableDatabase(); //获得数据库写的权限
5. 在main程序中点击文本后向addcontext类中传递的flag=“text”进入context界面,所以点击保存以后仅仅保存文本内容,
创建一个向数据库中添加数据的方法:
//在数据库中添加数据!
public void addDB(){ //操作数据库添加数据
ContentValues cValues=new ContentValues();
cValues.put(notesDB.CONTENT, editText.getText().toString());
cValues.put(notesDB.TIME, getTime());
cValues.put(notesDB.PATH, "");
cValues.put(notesDB.VIDEO, "");
dbWrite.insert(notesDB.TABLE_NAME, null, cValues);
}
由于在数据库中要保存时间的信息,所有要创建一个获得当前时间的方法,
//取得时间!
public String getTime(){
long time=System.currentTimeMillis(); //获取时间段的长度
SimpleDateFormat format=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); //日期的格式
Date curDate=new Date(time); //获取当前的日期
String str=format.format(curDate); //取出format格式的时间!
return str;
}
此时就可以将我们在编辑框中书写的文本保存在数据库中;
转载于:https://my.oschina.net/zehui1314/blog/668411
一个android记事本的学习过程记录! (一)相关推荐
- android 记事本的发展历程,一个android记事本的学习过程记录! (三)
上一篇中,我们实现了在保存文字后,将保存的数据显示到主页的ListView之中,说明保存文本的功能实现了.现在我们开始实现保存 图片和视频的功能:由于保存图片和和视频与保存文本不一样,他们不能存入到数 ...
- 记录一个android性能优化宝藏级总结
发现一个android性能优化文章宝藏级总结,太赞了,感谢大佬的无私奉献总结,防止丢失,在此记录一下 传送门 复制一些目录,增加一些篇幅{嘻嘻} 优化心得和经验 抖音 Android 性能优化系列:启 ...
- 小白记录第一个Android APP,VS2019,Xamarin,C#
小白记录第一个Android APP,VS2019,Xamarin,C# 一.App功能需求及背景 二.参考 三.新建一个项目 四.设计App界面 五.编写代码 六.发布,生成Apk 七.安装测试 八 ...
- 面试经验 | 一个 Android 小老弟的面试记录 (1-3年)
一个 Android 菜瓜的面试之旅,希望对大家有所帮助. 一些叨叨 老是听说Android端凉了,寒冬如何如何,老弟觉得并不是,只是饱和了,市场对一个Android开发工程师的要求更加严格,不再是普 ...
- android 记事本ppt,基于Android记事本软件设计与实现.ppt
基于Android记事本软件设计与实现 START 基于Android记事本软件的设计与实现 研究现状 传统记事本虽然与纸质的笔记本相比,给我们的生产生活带来了巨大的便利,但随着智能化的迅猛发展和互联 ...
- Android Studio 学习实例记录-手电筒
Android Studio 学习实例记录-手电筒 刚安装好Android Studio3.1.2,上网搜了一个实例进行实践学习,仅用这篇文章来记录学习过程 MainActivity.java的源码来 ...
- android记事本答辩ppt,毕业答辩-基于android记事本软件的设计与实现.ppt
基于Android记事本软件的设计与实现,研究现状,传统记事本虽然与纸质的笔记本相比,给我们的生产生活带来了巨大的便利,但随着智能化的迅猛发展和互联网的普及,人们对记事本的要求也变得越来越高.传统记事 ...
- 开启NOTE新时代 七款Android记事本软件推荐
开启NOTE新时代 七款Android记事本软件推荐 套用一句广告词"开启NOTE新时代",当然此NOTE非彼NOTE.作为备忘提醒.日常记事或者记录突发灵感,记事本都可以说是最大 ...
- Android记事本 (附apk和源码)
Android记事本 基于数据库 工程下载 功能简介 操作演示 部分代码展示 工程下载 Gitee 下载地址 点击跳转(源码及apk) 百度云 下载地址 点击跳转 提取码:uksb CSDN 下载 点 ...
最新文章
- 【组队学习】【31期】动手学数据分析
- oracle job相关
- eclipse 快捷键汇总
- linux ifconfig命令参数及用法详解--linux查看配置网卡命令
- 处理Redis里的数据
- Asset Store 下载的package存在什么地方?
- 准备离职,工作的一些细节记录
- python生成字符画_通过python将图片生成字符画
- IT 行业加班到底有没有价值?
- Pygame下载和安装
- canvas练习 - 七巧板绘制
- PayPal提现到美国账户收35美元怎么办?最新3种解决办法!
- PS系列之 -- 用通道抠图
- NK细胞治疗肿瘤相关进展概述
- 一个几乎对英语零基础的人,该如何有效,且高效的学习英语?
- 鸿蒙轻量设备侧Camera应用中的Surface使用
- 网络最大流和最小费用流
- 虚拟机ubuntu14.04编译MPI版本NAMD
- python学习笔记---中文词云
- 使用IAccessible接口,遍历DirectUI窗口控件的问题?
热门文章
- linux 系统装中文输入法 fcitx
- Linux统计文件行数
- IBM XIV高效存储广受公安、医疗、电信、金融等客户赞誉
- [ASP.NET 控件实作 Day31] TBContextMenu 控件三种不同模式的 Click 动作
- [Jobdu] 题目1504:把数组排成最小的数
- 邁向IT專家成功之路的三十則鐵律 鐵律十四:IT人言談之道-守中
- CSDN问答频道“华章杯”7月排行榜活动开始,丰厚奖品等你拿
- JFinal 源码导读第二天(2)configPlugin,configRoute
- 服务器Jmail配置问题
- 关于vscode的插件配置