Android實現記事本專案完整例項,附原始碼
阿新 • • 發佈:2018-12-23
2014年12月3日14:42:40
by tops
技術方面主要用到SQLite,listview、Intent等知識點。
多媒體資訊表-media
id-Integer型、主鍵、自動增加 INTEGER PRIMARY KEY AUTOINCREMENT, path- text型,不為空,預設為“” TEXT NOT NULL DEFAULT \"\",
note_id- Integer型,不為空,預設為0 INTEGER NOT NULL DEFAULT 0
一、需求分析
一個記事本,能夠輸入標題和內容,建立日期、最新修改日期等資訊。 如果沒有輸入標題則使用內容的第一句話作為標題,建立日期和修改日期均由系統自動生成,無需使用者干預。 提供筆記列表,列表中筆記展示位標題、建立日期/修改日期 高階的可以給筆記新增照片或視訊,這既可以自己拍攝也可以新增手機中已有的視訊。二、可行性分析
技術可行,經濟可行,作為練習使用技術方面主要用到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 \"\",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">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</ListView>
<Button
android: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">
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:singleLine="true">
<requestFocus/>
</EditText>
<EditText
android:id="@+id/etContent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ems="10"
android:gravity="top"/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2">
</ListView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/btnSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="儲存"/>
<Button
android:id="@+id/btnCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="取消"/>
<Button
android:id="@+id/btnAddPhoto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="拍照"/>
<Button
android: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">
<ImageView
android:id="@+id/ivIcon"
android:layout_width="80dp"
android:layout_height="80dp"/>
<TextView
android: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">
<TextView
android:id="@+id/tvName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<TextView
android:id="@+id/tvDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
主頁面/筆記列表顯示頁面的java程式碼
/Notes/src/com/tops/notes/MainActivity.javapackage 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