1. 程式人生 > >Android實現記事本專案完整例項,附原始碼

Android實現記事本專案完整例項,附原始碼

2014年12月3日14:42:40 by tops

一、需求分析

一個記事本,能夠輸入標題和內容,建立日期、最新修改日期等資訊。 如果沒有輸入標題則使用內容的第一句話作為標題,建立日期和修改日期均由系統自動生成,無需使用者干預。 提供筆記列表,列表中筆記展示位標題、建立日期/修改日期 高階的可以給筆記新增照片或視訊,這既可以自己拍攝也可以新增手機中已有的視訊。

二、可行性分析

技術可行,經濟可行,作為練習使用
技術方面主要用到SQLite,listview、Intent等知識點。

三、編寫專案計劃書

專案功能模組劃分

開啟應用的第一個頁面用於展示已有的筆記列表,列表中的每一個筆記條目都可以點選,點選之後呈現此筆記的完整內容/編輯頁面,列表下方有一個新增筆記的按鈕,

開發週期

開發人員安排及工作分配

四、系統設計-功能結構設計,業務流程設計

uml建模工具的使用

新建筆記

點選新增筆記按鈕→開啟編輯筆記頁面 使用者分別在標題欄和內容欄輸入內容; 點選新增視訊時,開啟系統錄影拍攝視訊並儲存,然後在多媒體列表中顯示視訊圖片、檔名稱、路徑; 點選新增影象時,開啟照相機拍攝圖片並儲存,然後在多媒體列表中顯示影象圖片、檔名稱、路徑; →點選儲存按鈕,將筆記和多媒體資訊儲存到資料庫; →點選取消按鈕,關閉當前頁面,返回主頁面/筆記列表頁面。

修改筆記

點選筆記列表中的筆記時,開啟編輯筆記頁面,並傳入當前筆記的資訊,在編輯頁面有使用者對筆記操作,跟新建筆記的操作相同

刪除筆記

選擇已有筆記,進行資料庫刪除操作。

儲存筆記

將編輯頁面裡的筆記資訊存入到筆記資料庫表中,多媒體資訊存入到多媒體資料庫表中

五、資料庫設計

筆記表-notes id- Integer型、主鍵、自動增加 INTEGER PRIMARY KEY AUTOINCREMENT, name- text型,不為空,預設為“”  TEXT NOT NULL DEFAULT \"\", content,text型,不為空,預設為“”  TEXT NOT NULL DEFAULT \"\", date,text型,不為空,預設為“”  TEXT NOT NULL DEFAULT \"\",
多媒體資訊表-media
id-Integer型、主鍵、自動增加 INTEGER PRIMARY KEY AUTOINCREMENT, path- text型,不為空,預設為“” TEXT NOT NULL DEFAULT \"\",
note_id-  Integer型,不為空,預設為0  INTEGER NOT NULL DEFAULT 0

六、架構設計

模組與模組之間的通訊機制,MVC、 檢視層,使用LinearLayout,列表使用ListView 專案工程結構:

七、程式碼開發及工作分配

主頁面/筆記列表顯示頁面的佈局程式碼:

/Notes/res/layout/activity_main.xml
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><ListViewandroid:id="@android:id/list"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1"></ListView><Buttonandroid:id="@+id/btnAddNote"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="新增日誌"/></LinearLayout>

編輯筆記頁面的佈局程式碼:

/Notes/res/layout/aty_eidt_note.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditTextandroid:id="@+id/etName"android:layout_width="match_parent"android:layout_height="wrap_content"android:ems="10"android:singleLine="true"><requestFocus/></EditText><EditTextandroid:id="@+id/etContent"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"android:ems="10"android:gravity="top"/><ListViewandroid:id="@android:id/list"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="2"></ListView><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"><Buttonandroid:id="@+id/btnSave"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="儲存"/><Buttonandroid:id="@+id/btnCancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="取消"/><Buttonandroid:id="@+id/btnAddPhoto"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="拍照"/><Buttonandroid:id="@+id/btnAddVideo"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="錄影"android:layout_weight="1"/></LinearLayout></LinearLayout>

顯示多媒體列表的條目佈局:

/Notes/res/layout/media_list_cell.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:gravity="center_vertical"><ImageViewandroid:id="@+id/ivIcon"android:layout_width="80dp"android:layout_height="80dp"/><TextViewandroid:id="@+id/tvPath"android:layout_width="match_parent"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"/></LinearLayout>

顯示筆記列表的條目佈局:

/Notes/res/layout/notes_list_cell.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/tvName"android:layout_width="match_parent"android:layout_height="wrap_content"android:textAppearance="?android:attr/textAppearanceLarge"/><TextViewandroid:id="@+id/tvDate"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout>

主頁面/筆記列表顯示頁面的java程式碼

/Notes/src/com/tops/notes/MainActivity.java
package com.tops.notes;import com.tops.notes.db.NotesDB;import android.app.Activity;import android.app.ListActivity;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.ListView;import android.widget.SimpleCursorAdapter;/** * 繼承ListActivity的Activity,呈現已經存在的日誌和新增日誌按鈕 *  * @author TOPS *  */publicclassMainActivityextendsListActivity{privateSimpleCursorAdapter adapter =null;privateNotesDB db;privateSQLiteDatabase dbRead;publicstaticfinalint REQUEST_CODE_ADD_NOTE =1;publicstaticfinalint REQUEST_CODE_EDIT_NOTE =2;/**	 * 實現OnClickListener介面,新增日誌按鈕的監聽	 */privateOnClickListener btnAddNote_clickHandler