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数据库的基本知识:

  1. SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器

  2. 支持的数据类型:空值,整形,浮点,字符串,二进制等,数据库常用的类型都支持;

  3. SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法,

    1. openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory  factory),打开或创建数据库

    2. insert(String table,String nullColumnHack,ContentValues  values) 插入数据

    3. delete(String table,String whereClause,String[]  whereArgs)  删除数据

    4. query(String table,String[] columns,String selection,String[]  selectionArgs,String groupBy,String having,String  orderBy)  查询语句

    5. update(String table,ContentValues values,String whereClause,String[]  whereArgs) 修改语句

    6. 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记事本的学习过程记录! (一)相关推荐

  1. android 记事本的发展历程,一个android记事本的学习过程记录! (三)

    上一篇中,我们实现了在保存文字后,将保存的数据显示到主页的ListView之中,说明保存文本的功能实现了.现在我们开始实现保存 图片和视频的功能:由于保存图片和和视频与保存文本不一样,他们不能存入到数 ...

  2. 记录一个android性能优化宝藏级总结

    发现一个android性能优化文章宝藏级总结,太赞了,感谢大佬的无私奉献总结,防止丢失,在此记录一下 传送门 复制一些目录,增加一些篇幅{嘻嘻} 优化心得和经验 抖音 Android 性能优化系列:启 ...

  3. 小白记录第一个Android APP,VS2019,Xamarin,C#

    小白记录第一个Android APP,VS2019,Xamarin,C# 一.App功能需求及背景 二.参考 三.新建一个项目 四.设计App界面 五.编写代码 六.发布,生成Apk 七.安装测试 八 ...

  4. 面试经验 | 一个 Android 小老弟的面试记录 (1-3年)

    一个 Android 菜瓜的面试之旅,希望对大家有所帮助. 一些叨叨 老是听说Android端凉了,寒冬如何如何,老弟觉得并不是,只是饱和了,市场对一个Android开发工程师的要求更加严格,不再是普 ...

  5. android 记事本ppt,基于Android记事本软件设计与实现.ppt

    基于Android记事本软件设计与实现 START 基于Android记事本软件的设计与实现 研究现状 传统记事本虽然与纸质的笔记本相比,给我们的生产生活带来了巨大的便利,但随着智能化的迅猛发展和互联 ...

  6. Android Studio 学习实例记录-手电筒

    Android Studio 学习实例记录-手电筒 刚安装好Android Studio3.1.2,上网搜了一个实例进行实践学习,仅用这篇文章来记录学习过程 MainActivity.java的源码来 ...

  7. android记事本答辩ppt,毕业答辩-基于android记事本软件的设计与实现.ppt

    基于Android记事本软件的设计与实现,研究现状,传统记事本虽然与纸质的笔记本相比,给我们的生产生活带来了巨大的便利,但随着智能化的迅猛发展和互联网的普及,人们对记事本的要求也变得越来越高.传统记事 ...

  8. 开启NOTE新时代 七款Android记事本软件推荐

    开启NOTE新时代 七款Android记事本软件推荐 套用一句广告词"开启NOTE新时代",当然此NOTE非彼NOTE.作为备忘提醒.日常记事或者记录突发灵感,记事本都可以说是最大 ...

  9. Android记事本 (附apk和源码)

    Android记事本 基于数据库 工程下载 功能简介 操作演示 部分代码展示 工程下载 Gitee 下载地址 点击跳转(源码及apk) 百度云 下载地址 点击跳转 提取码:uksb CSDN 下载 点 ...

最新文章

  1. 【组队学习】【31期】动手学数据分析
  2. oracle job相关
  3. eclipse 快捷键汇总
  4. linux ifconfig命令参数及用法详解--linux查看配置网卡命令
  5. 处理Redis里的数据
  6. Asset Store 下载的package存在什么地方?
  7. 准备离职,工作的一些细节记录
  8. python生成字符画_通过python将图片生成字符画
  9. IT 行业加班到底有没有价值?
  10. Pygame下载和安装
  11. canvas练习 - 七巧板绘制
  12. PayPal提现到美国账户收35美元怎么办?最新3种解决办法!
  13. PS系列之 -- 用通道抠图
  14. NK细胞治疗肿瘤相关进展概述
  15. 一个几乎对英语零基础的人,该如何有效,且高效的学习英语?
  16. 鸿蒙轻量设备侧Camera应用中的Surface使用
  17. 网络最大流和最小费用流
  18. 虚拟机ubuntu14.04编译MPI版本NAMD
  19. python学习笔记---中文词云
  20. 使用IAccessible接口,遍历DirectUI窗口控件的问题?

热门文章

  1. linux 系统装中文输入法 fcitx
  2. Linux统计文件行数
  3. IBM XIV高效存储广受公安、医疗、电信、金融等客户赞誉
  4. [ASP.NET 控件实作 Day31] TBContextMenu 控件三种不同模式的 Click 动作
  5. [Jobdu] 题目1504:把数组排成最小的数
  6. 邁向IT專家成功之路的三十則鐵律 鐵律十四:IT人言談之道-守中
  7. CSDN问答频道“华章杯”7月排行榜活动开始,丰厚奖品等你拿
  8. JFinal 源码导读第二天(2)configPlugin,configRoute
  9. 服务器Jmail配置问题
  10. 关于vscode的插件配置