日記app安卓
發(fā)布時間:2017-01-18 來源: 日記大全 點擊:
日記app安卓篇一:基于android的日記本開發(fā)
西南科技大學(xué) 課程設(shè)計報告
課程名稱: 軟件設(shè)計基礎(chǔ)設(shè)計名稱: 基于android的日記本開發(fā)姓 名:學(xué) 號: 班 級: 通信1003班 指導(dǎo)教師:起止日期: 11.28——12.12
西南科技大學(xué)信息工程學(xué)院制
方 向 設(shè) 計 任 務(wù) 書
學(xué)生班級: 通信1003班 學(xué)生姓名:學(xué)號:
設(shè)計名稱:基于android的日記本開發(fā) 起止日期: 11.28——12.12指導(dǎo)教師:
方 向 設(shè) 計 學(xué) 生 日 志
2
基于android的日記本開發(fā)
一、 摘要(150-250字)
伴隨著無線移動設(shè)備的迅速發(fā)展,手機(jī)的日益普及成為主流,在這一關(guān)鍵時期,Android系統(tǒng)的推出使手機(jī)發(fā)展進(jìn)入了一個新的領(lǐng)域。世界上一些知名移動設(shè)備生產(chǎn)廠商對于Android智能機(jī)的開發(fā)熱情日益提高,Android系統(tǒng)的使用人群正在急速提升,Android應(yīng)用程序的多樣化使人們從手機(jī)中獲得更多樂趣,方便著人們的生活,使Android得到了社會越來越多的認(rèn)同。本次設(shè)計主要描述了基于android開發(fā)一個簡易日記本的技術(shù)方法。
關(guān)鍵字:Android; DbAdapter;Activity;diary 二、 設(shè)計目的和意義
在中國,手機(jī)已經(jīng)成為人們?nèi)粘I畋夭豢缮俚囊徊糠,智能手機(jī)在高校人群中逐漸得到了普及,Android手機(jī)憑借其優(yōu)秀的系統(tǒng)性能以及良好的用戶體驗迅速得到了高校師生的青睞。在高校中,上課并不像高中時期有固定的教室和固定的時間,高校課程種類繁多,并且上課地點和時間不固定,一周內(nèi)極少會出現(xiàn)重復(fù)課程,所以要將課程表完整的記憶下來是一項很艱難的事情,很多同學(xué)不得不隨身攜帶一張課表來防止遺忘上課,但是還是不能完全避免該問題的發(fā)生,同時,作為一個當(dāng)今高速發(fā)展的時代的成員,適應(yīng)這個社會是必不能少的,在各種社交場合中,記住一些必須的信息很重要,而它們往往又繁瑣又多,不易人為記住;谶@些問題,有必要設(shè)計一款方便小巧的簡易日記本程序,可以讓用戶自定義文件,記住上課時間和地點,從而避免遺忘上課的事情出現(xiàn),同時記住那些瑣碎卻有意義的小信息。而且,由于android系統(tǒng)市場的開放性和服務(wù)免費,它的應(yīng)用程序方面就成了一塊非常大的市場,。 三、 設(shè)計原理
用戶在第一次進(jìn)入程序時會看到到一個日記本的主界面,可進(jìn)行日記文件的新建和刪除操作,按menu鍵可以選擇“幫助”和“退出”,程序主界面使用course_activity.java展示記錄,從Diary_activity, DiaryEditActivity類中可以新建和刪除日記信息,并在主界面中顯示。程序的配置信息主要存在DbAdapter中,該信息在數(shù)據(jù)顯示時讀取必要的配置信息,在按鈕監(jiān)聽函數(shù)中監(jiān)聽系統(tǒng)時間變化用來實現(xiàn)日記的創(chuàng)建功能。BaseColumns 是一個接口,里邊有兩個變量,一個是_ID="_id",一個是_COUNT="_ count" 。在Android當(dāng)中,每一個數(shù)據(jù)庫表至少有一個字段,而且這個字段是_id。所以當(dāng)我們構(gòu)造列名的輔助類時,直接實現(xiàn)BaseColumns ,這樣我們便默認(rèn)地?fù)碛辛薩id字段。在我們的日記本的數(shù)據(jù)表里,一共有4個字段,分別是:"id"、"title"、"body"、"created"。在Android中鼓勵使用內(nèi)部類,這樣不但使用方便,而且執(zhí)行效率也高是請求數(shù)據(jù)的類型,例如,在例子當(dāng)中定義的類型是diary。當(dāng)然這一部分可以是0個片段或者多個片段構(gòu)成,如果Content Provider只是暴露出了一種類型的數(shù)據(jù),那么這部分可以為空,但是如果暴露出了多種,尤其是包含子類的時候,就不能為空,"1"這部分是允許為空的,如果為空,表示請求全部數(shù)據(jù);如果不為空,表示請求特定ID的數(shù)據(jù)。DatabaseHelper是操作數(shù)據(jù)庫的輔助類,通過這個類我們可以生成數(shù)據(jù)庫,并且維護(hù)這個數(shù)據(jù)庫。 在DiaryContentProvider中,我們定義了一些變量和常量,其中這些常量主要是描述數(shù)據(jù)庫的信息。在刪除方法中,rowId = uri.getPathSegments().get(1)負(fù)責(zé)得到rowId的值。 getPathSegments()方法得到一個string的list, db.delete(DIARY_TABLE_NAME, DiaryColumns.
_ID + "=" + rowId, null)是標(biāo)準(zhǔn)的SQLite刪除操作。update()是更新一條數(shù)據(jù)的方法, 使用ContentProvider時首先得到SQLiteDatabase,然后得到rowId,最后再調(diào)用db.update(DIARY_ TABLE_NAME, values, DiaryColumns._ID + "="+ rowId, null)語句執(zhí)行更新工作。3
其主要流程圖如下:
功能模塊:
四、 詳細(xì)設(shè)計步驟
簡易日記本應(yīng)該具有日記本的基本功能,比如新建,編輯,刪除,保存等,從這幾方面初步想到應(yīng)該有一個主類負(fù)責(zé)調(diào)用其他負(fù)責(zé)實現(xiàn)功能的類,這樣整個程序會比較清晰,通過流程分析和可行性分析之后我開始查閱資料編寫程序,本程序主要由六個類組成,它們分別為Dbadapter,help-activity,lookDiary,MainActivity,diary-activity和DiaryEditActivity ,
1.其中MainActivity類為整個應(yīng)用的主Activity,其主要方法如下:
? onCreate:Activity主要重寫方法之一,實現(xiàn)程序初始化和界面展示; ? find_and_modify_button:尋找并點擊按鈕; ? onClick(View v):點擊當(dāng)前所選按鈕;
? onCreateOptionMenu:實現(xiàn)Option菜單的創(chuàng)建;
? onOptionsItemSelected:實現(xiàn)菜單項的點擊事件響應(yīng);
界面設(shè)計方面通過RelativeLayout實現(xiàn)布局,使用了TextView,ImageButton文件列表通
4
過ListView實現(xiàn)界面展示。該類通過繼承ListActivity類,用來顯示ListView中的數(shù)據(jù)并實現(xiàn)對ListView上ImageView控件點擊的統(tǒng)一響應(yīng)。 其主要代碼:public class MainActivity extends Activity
{//菜單選項
public static final int HELP = Menu.FIRST; public static final int EXIT = Menu.FIRST + 1; /** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setTitle("小小日記本");find_and_modify_button();
Toast.makeText(MainActivity.this,
"歡迎使用簡易日記本", Toast.LENGTH_SHORT).show(); } private void find_and_modify_button() {// TODO Auto-generated method stubButton btn_diary = (Button) findViewById(R.id.btn_diary);btn_diary.setOnClickListener(diary_listener); } private Button.OnClickListener diary_listener = new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(MainActivity.this, diary_activity.class); startActivity(intent);} } /** menu.findItem(EXIT_ID);找到特定的MenuItem* MenuItem.setIcon.可以設(shè)置menu按鈕的背景*/ public boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(0, HELP, 0, "幫助").setIcon(R.drawable.helps);menu.add(0, EXIT, 0, "退出").setIcon(R.drawable.exit);return true; } public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case HELP:Intent help_intent = new Intent(); help_intent.setClass(MainActivity.this, help_activity.class); startActivity(help_intent);break;case EXIT:
5
日記app安卓篇二:android日記本代碼
一、實驗詳細(xì)代碼
(1) 布局的代碼
a. edit.xml代碼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="主題"
android:padding="2px" />
<EditText android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="內(nèi)容" />
<EditText android:id="@+id/body"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:scrollbars="vertical" android:gravity="top" />
<Button android:id="@+id/confirm" android:text="確定"android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
b. list.xml的代碼
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView android:id="@+id/android:list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@+id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="按下MENU寫日記!" />
</LinearLayout>
c. row.xml的代碼
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/row"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="30px"
android:maxWidth="200dip"
android:textSize="22sp"
android:layout_marginTop="10dip"
android:text="第1組第1項" />
<TextView android:id="@+id/created"
android:layout_width="wrap_content"
android:layout_height="35px"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:layout_marginTop="10dip"
android:text="2011年10月30日" />
</RelativeLayout>
(2) 主要程序代碼
a. DiaryBookDemo代碼
public class DiaryBookDemo extends ListActivity {
private static final int ACTIVITY_CREATE = 0;
private static final int ACTIVITY_EDIT = 1;
private static final int INSERT_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST + 1;
private DiaryDbAdapter mDbHelper;
private Cursor mDiaryCursor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
mDbHelper = new DiaryDbAdapter(this);
mDbHelper.open();
renderListView();
startService(new Intent(this, TimerServer.class)); }
private void renderListView() {
mDiaryCursor = mDbHelper.getAllNotes();
startManagingCursor(mDiaryCursor);
String[] from = new String[] { DiaryDbAdapter.KEY_TITLE, DiaryDbAdapter.KEY_CREATED };
int[] to = new int[] { R.id.text1, R.id.created };
SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.row, mDiaryCursor, from, to);setListAdapter(notes);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, INSERT_ID, 0, "插入");
menu.add(0, DELETE_ID, 0, "刪除");
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()) {
case INSERT_ID:
createDiary();
return true;
case DELETE_ID:
mDbHelper.deleteDiary(getListView().getSelectedItemId());
renderListView();
return true;
}
return super.onMenuItemSelected(featureId, item); }
private void createDiary() {
Intent i = new Intent(this, ActivityDiaryEdit.class);startActivityForResult(i, ACTIVITY_CREATE);
}
@Override
// 需要對position和id進(jìn)行一個很好的區(qū)分
// position指的是點擊的這個ViewItem在當(dāng)前ListView中的位置 // 每一個和ViewItem綁定的數(shù)據(jù),肯定都有一個id,通過這個id可以找到那條數(shù)據(jù)。
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Cursor c = mDiaryCursor;
c.moveToPosition(position);
Intent i = new Intent(this, ActivityDiaryEdit.class);i.putExtra(DiaryDbAdapter.KEY_ROWID, id);
i.putExtra(DiaryDbAdapter.KEY_TITLE, c.getString(c
.getColumnIndexOrThrow(DiaryDbAdapter.KEY_TITLE)));
i.putExtra(DiaryDbAdapter.KEY_BODY, c.getString(c
.getColumnIndexOrThrow(DiaryDbAdapter.KEY_BODY)));
startActivityForResult(i, ACTIVITY_EDIT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);renderListView();
}
}
b. ActivityDiaryEdit的代碼
public class ActivityDiaryEdit extends Activity {
private EditText mTitleText;
private EditText mBodyText;
private Long mRowId;
private DiaryDbAdapter mDbHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
mDbHelper = new DiaryDbAdapter(this);
mDbHelper.open();
setContentView(R.layout.edit);
mTitleText = (EditText) findViewById(R.id.title);mBodyText = (EditText) findViewById(R.id.body);
Button confirmButton = (Button)
findViewById(R.id.confirm);
mRowId = null;
// 每一個intent都會帶一個Bundle型的extras數(shù)據(jù)。Bundle extras = getIntent().getExtras();
if (extras != null) {
String title =
extras.getString(DiaryDbAdapter.KEY_TITLE);
String body =
extras.getString(DiaryDbAdapter.KEY_BODY);
mRowId = extras.getLong(DiaryDbAdapter.KEY_ROWID);
if (title != null) {
mTitleText.setText(title);
}
if (body != null) {
mBodyText.setText(body);
}
}
confirmButton.setOnClickListener(new
View.OnClickListener() {
public void onClick(View view) {
String title = mTitleText.getText().toString(); String body = mBodyText.getText().toString(); if (mRowId != null) {
mDbHelper.updateDiary(mRowId, title, body); } else
mDbHelper.createDiary(title, body); Intent mIntent = new Intent();
setResult(RESULT_OK, mIntent);
日記app安卓篇三:安卓開發(fā)實習(xí)_個人日志
中軟國際 長沙ETC 實 習(xí) 實 訓(xùn) 日 志
相關(guān)熱詞搜索:日記 app 日本appstore有安卓嗎 妹調(diào)日記安卓
熱點文章閱讀