一、应用介绍
应用总共有3个界面,支持增删改查操作。
①首先,打开应用将进入如下界面:
在这里可以新建日记。
②点击右上角竖着的“三个点”,弹出菜单,菜单选项分别是“查看日记”、“退出程序”。
③点击“查看日记”,则会进入如下的界面:
该界面的列表是运用RecyclerView来制作的。在该界面点击时间部分可以删除对应的记录。
④点击标题“抓射手”,则会进入到如下的详情界面:
在这里可以查阅日记的详情、可以对日记的标题和内容进行更改。
二、应用用到的一些知识
- 顶部的Toolbar
首先每个界面顶部都有一个工具栏,这个工具栏可不是默认的ActionBar。因为ActionBar存在一些缺陷,所以本应用没有采用ActionBar。
想要隐藏掉默认的ActionBar,可以在res/values目录下的styles.xml文件中更换主题,即采用“NoActionBar”的主题。例如我的styles.xml文件具体的内容如下:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
- SQLite数据库
SQLite数据库是安卓内置的一款轻量级的关系型数据库,与MySQL数据库相比,它占的内存更低,数据类型更加简单,使用时也不需要输入用户名和密码。
要想使用SQLite数据库,首先需要写一个类去继承SQLiteOpenHelper这个抽象类,然后重写它的onCreate()方法和onUpgrade()方法。
例如,我自己写了一个名为“MySQLiteOpenHelper”的类,代码如下:
public class MySQLiteOpenHelper extends SQLiteOpenHelper
{
private String sql="create table Notepad(id integer primary key autoincrement,title text,body text,time text)";
private Context mContext;
//构造器
public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
{
super(context, name, factory, version);
mContext=context;
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(sql);
Toast.makeText(mContext,"数据库创建成功!",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
}
}
然后,就可以创建MySQLiteOpenHelper的对象了,代码如下;
MySQLiteOpenHelper mydb = new MySQLiteOpenHelper(context, "mydb", null, 1);
第一个参数是Context,第二个参数是数据库对应的文件名,第三个参
数允许我们在查询数据的时候返回一个自定义的 Cursor,一般都是传入 null ,第四个参数是数据库的版本号。
紧接着,利用MySQLiteOpenHelper对象的getReadableDatabase()方法去获取一个SQLiteDatabase对象,代码如下:
SQLiteDatabase sqLiteDatabase = mydb.getReadableDatabase();
SQLiteDatabase对象就是用来对数据库进行增删改查操作的。
- 随时随地退出程序
需要写一个类ActivityCollector去管理活动,代码如下:
public class ActivityCollector
{
public static List<Activity> activities = new ArrayList<>();
public static void addActivity(Activity activity)
{
activities.add(activity);
}
public static void removeActivity(Activity activity)
{
activities.remove(activity);
}
public static void finishAll()
{
for (Activity activity : activities)
{
if (!activity.isFinishing())
{
activity.finish();
}
}
activities.clear();
}
}
再写一个名为BaseActivity的类,代码如下:
public class BaseActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy()
{
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
然后让整个应用的活动去继承BaseActivity这个类,而不是去继承默认的AppCompatActivity。
在需要退出程序的地方加上下面的两行代码就行了:
ActivityCollector.finishAll();
Process.killProcess(Process.myPid());//杀掉当前进程
本应用是在“退出程序”的点击事件里面写了上面的两行代码的。
三、数据库表的设计
数据库表的结构比较简单,只有一张Notepad表,这张表有四个字段(列),具体情况如下表:
列名 | 数据类型 | 说明 |
---|---|---|
id | integer | 主键 |
title | text | 日记的标题 |
body | text | 日记的正文 |
time | text | 创建日记的时间 |
四、项目的地址
项目已经放到github上了:完整的项目github地址