一个android记事本的学习过程记录! (一)
2016-04-30 13:12
537 查看
一 首先是这个记事本我想实现的几个功能!
1.记录文字;
2.记录图片;
3.可以记录视频;
4.可以查看已经记录的事件;
二 在知道了要实现的功能后就要开始进入设计UI 的部分了;
首先我们在主界面中,设计简单的几个控件,一个ListView用来显示已经记录的事件;三个Button分别对应文字,图片,视频的记事。
MainActivity.xml
![](http://static.oschina.net/uploads/space/2016/0425/230044_s7pJ_2729044.jpg)
设计完主界面后,开始写记录内容的界面,context.xml
![](http://static.oschina.net/uploads/space/2016/0425/230839_GrvF_2729044.jpg)
![](http://static.oschina.net/uploads/space/2016/0425/230839_jnSQ_2729044.jpg)
![](http://static.oschina.net/uploads/space/2016/0425/230839_JHfq_2729044.jpg)
这是记录三种不同类型的事件时,所使用的不同的界面;
那么主要的UI 界面就算完成了!
三 .界面完成以后就要开始完成功能的实现!
1.首先先完成主界面和几个的界面切换;
通过使用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. 现在我们创建一个保存内容的数据库;
在程序中把所有的字段单独定义,方便以后修改;在这个类中,生成一个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;
}
此时就可以将我们在编辑框中书写的文本保存在数据库中;
1.记录文字;
2.记录图片;
3.可以记录视频;
4.可以查看已经记录的事件;
二 在知道了要实现的功能后就要开始进入设计UI 的部分了;
首先我们在主界面中,设计简单的几个控件,一个ListView用来显示已经记录的事件;三个Button分别对应文字,图片,视频的记事。
MainActivity.xml
![](http://static.oschina.net/uploads/space/2016/0425/230044_s7pJ_2729044.jpg)
设计完主界面后,开始写记录内容的界面,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" > <ImageView android: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"/> <EditText android: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>
![](http://static.oschina.net/uploads/space/2016/0425/230839_GrvF_2729044.jpg)
![](http://static.oschina.net/uploads/space/2016/0425/230839_jnSQ_2729044.jpg)
![](http://static.oschina.net/uploads/space/2016/0425/230839_JHfq_2729044.jpg)
这是记录三种不同类型的事件时,所使用的不同的界面;
那么主要的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 stub switch (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 3ff0 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 stub arg0.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;
}
此时就可以将我们在编辑框中书写的文本保存在数据库中;
相关文章推荐
- android学习记录 Onclick事件监听
- Android滚轮时间选择控件(可扩展自定义)
- 最新版 android studio 配置 phonegap (windows环境)
- 常用的android 框架收藏
- 详解实现Android中实现View滑动的几种方式
- Android图片编译报错
- 浅谈Android支付宝快捷支付
- Android 中的 Service 全面总结
- Android 数据存储
- Android 6.0的Launcher3的关于Hotseat的浅析
- button,android:onClick=""
- Android之Style简化代码
- 58. Android一些开发习惯总结
- 57. Android之程序调试LogCat (转)
- ListView 中嵌入GridView去滚动效果
- Android 图片操作,Image实战
- Android性能优化典范
- Android ActivityManagerService 基本构架详解
- android sdk 下各个文件夹的作用
- Android自定义视图一:扩展现有的视图,添加新的XML属性