安卓日記app
發(fā)布時(shí)間:2017-02-14 來源: 日記大全 點(diǎn)擊:
安卓日記app篇一:安卓開發(fā)實(shí)習(xí)_個(gè)人日志
中軟國(guó)際 長(zhǎng)沙ETC 實(shí) 習(xí) 實(shí) 訓(xùn) 日 志
安卓日記app篇二:基于android的日記本開發(fā)
西南科技大學(xué) 課程設(shè)計(jì)報(bào)告
課程名稱: 軟件設(shè)計(jì)基礎(chǔ)設(shè)計(jì)名稱: 基于android的日記本開發(fā)姓 名:學(xué) 號(hào): 班 級(jí): 通信1003班 指導(dǎo)教師:起止日期: 11.28——12.12
西南科技大學(xué)信息工程學(xué)院制
方 向 設(shè) 計(jì) 任 務(wù) 書
學(xué)生班級(jí): 通信1003班 學(xué)生姓名:學(xué)號(hào):
設(shè)計(jì)名稱:基于android的日記本開發(fā) 起止日期: 11.28——12.12指導(dǎo)教師:
方 向 設(shè) 計(jì) 學(xué) 生 日 志
2
基于android的日記本開發(fā)
一、 摘要(150-250字)
伴隨著無線移動(dòng)設(shè)備的迅速發(fā)展,手機(jī)的日益普及成為主流,在這一關(guān)鍵時(shí)期,Android系統(tǒng)的推出使手機(jī)發(fā)展進(jìn)入了一個(gè)新的領(lǐng)域。世界上一些知名移動(dòng)設(shè)備生產(chǎn)廠商對(duì)于Android智能機(jī)的開發(fā)熱情日益提高,Android系統(tǒng)的使用人群正在急速提升,Android應(yīng)用程序的多樣化使人們從手機(jī)中獲得更多樂趣,方便著人們的生活,使Android得到了社會(huì)越來越多的認(rèn)同。本次設(shè)計(jì)主要描述了基于android開發(fā)一個(gè)簡(jiǎn)易日記本的技術(shù)方法。
關(guān)鍵字:Android; DbAdapter;Activity;diary 二、 設(shè)計(jì)目的和意義
在中國(guó),手機(jī)已經(jīng)成為人們?nèi)粘I畋夭豢缮俚囊徊糠郑悄苁謾C(jī)在高校人群中逐漸得到了普及,Android手機(jī)憑借其優(yōu)秀的系統(tǒng)性能以及良好的用戶體驗(yàn)迅速得到了高校師生的青睞。在高校中,上課并不像高中時(shí)期有固定的教室和固定的時(shí)間,高校課程種類繁多,并且上課地點(diǎn)和時(shí)間不固定,一周內(nèi)極少會(huì)出現(xiàn)重復(fù)課程,所以要將課程表完整的記憶下來是一項(xiàng)很艱難的事情,很多同學(xué)不得不隨身攜帶一張課表來防止遺忘上課,但是還是不能完全避免該問題的發(fā)生,同時(shí),作為一個(gè)當(dāng)今高速發(fā)展的時(shí)代的成員,適應(yīng)這個(gè)社會(huì)是必不能少的,在各種社交場(chǎng)合中,記住一些必須的信息很重要,而它們往往又繁瑣又多,不易人為記住;谶@些問題,有必要設(shè)計(jì)一款方便小巧的簡(jiǎn)易日記本程序,可以讓用戶自定義文件,記住上課時(shí)間和地點(diǎn),從而避免遺忘上課的事情出現(xiàn),同時(shí)記住那些瑣碎卻有意義的小信息。而且,由于android系統(tǒng)市場(chǎng)的開放性和服務(wù)免費(fèi),它的應(yīng)用程序方面就成了一塊非常大的市場(chǎng),。 三、 設(shè)計(jì)原理
用戶在第一次進(jìn)入程序時(shí)會(huì)看到到一個(gè)日記本的主界面,可進(jìn)行日記文件的新建和刪除操作,按menu鍵可以選擇“幫助”和“退出”,程序主界面使用course_activity.java展示記錄,從Diary_activity, DiaryEditActivity類中可以新建和刪除日記信息,并在主界面中顯示。程序的配置信息主要存在DbAdapter中,該信息在數(shù)據(jù)顯示時(shí)讀取必要的配置信息,在按鈕監(jiān)聽函數(shù)中監(jiān)聽系統(tǒng)時(shí)間變化用來實(shí)現(xiàn)日記的創(chuàng)建功能。BaseColumns 是一個(gè)接口,里邊有兩個(gè)變量,一個(gè)是_ID="_id",一個(gè)是_COUNT="_ count" 。在Android當(dāng)中,每一個(gè)數(shù)據(jù)庫(kù)表至少有一個(gè)字段,而且這個(gè)字段是_id。所以當(dāng)我們構(gòu)造列名的輔助類時(shí),直接實(shí)現(xiàn)BaseColumns ,這樣我們便默認(rèn)地?fù)碛辛薩id字段。在我們的日記本的數(shù)據(jù)表里,一共有4個(gè)字段,分別是:"id"、"title"、"body"、"created"。在Android中鼓勵(lì)使用內(nèi)部類,這樣不但使用方便,而且執(zhí)行效率也高是請(qǐng)求數(shù)據(jù)的類型,例如,在例子當(dāng)中定義的類型是diary。當(dāng)然這一部分可以是0個(gè)片段或者多個(gè)片段構(gòu)成,如果Content Provider只是暴露出了一種類型的數(shù)據(jù),那么這部分可以為空,但是如果暴露出了多種,尤其是包含子類的時(shí)候,就不能為空,"1"這部分是允許為空的,如果為空,表示請(qǐng)求全部數(shù)據(jù);如果不為空,表示請(qǐng)求特定ID的數(shù)據(jù)。DatabaseHelper是操作數(shù)據(jù)庫(kù)的輔助類,通過這個(gè)類我們可以生成數(shù)據(jù)庫(kù),并且維護(hù)這個(gè)數(shù)據(jù)庫(kù)。 在DiaryContentProvider中,我們定義了一些變量和常量,其中這些常量主要是描述數(shù)據(jù)庫(kù)的信息。在刪除方法中,rowId = uri.getPathSegments().get(1)負(fù)責(zé)得到rowId的值。 getPathSegments()方法得到一個(gè)string的list, db.delete(DIARY_TABLE_NAME, DiaryColumns._ID + "=" + rowId, null)是標(biāo)準(zhǔn)的SQLite刪除操作。update()是更新一條數(shù)據(jù)的方法, 使用ContentProvider時(shí)首先得到SQLiteDatabase,然后得到rowId,最后再調(diào)用db.update(DIARY_ TABLE_NAME, values, DiaryColumns._ID + "="+ rowId, null)語句執(zhí)行更新工作。
3
其主要流程圖如下:
功能模塊:
四、 詳細(xì)設(shè)計(jì)步驟
簡(jiǎn)易日記本應(yīng)該具有日記本的基本功能,比如新建,編輯,刪除,保存等,從這幾方面初步想到應(yīng)該有一個(gè)主類負(fù)責(zé)調(diào)用其他負(fù)責(zé)實(shí)現(xiàn)功能的類,這樣整個(gè)程序會(huì)比較清晰,通過流程分析和可行性分析之后我開始查閱資料編寫程序,本程序主要由六個(gè)類組成,它們分別為Dbadapter,help-activity,lookDiary,MainActivity,diary-activity和DiaryEditActivity ,
1.其中MainActivity類為整個(gè)應(yīng)用的主Activity,其主要方法如下:
? onCreate:Activity主要重寫方法之一,實(shí)現(xiàn)程序初始化和界面展示; ? find_and_modify_button:尋找并點(diǎn)擊按鈕; ? onClick(View v):點(diǎn)擊當(dāng)前所選按鈕;
? onCreateOptionMenu:實(shí)現(xiàn)Option菜單的創(chuàng)建;
? onOptionsItemSelected:實(shí)現(xiàn)菜單項(xiàng)的點(diǎn)擊事件響應(yīng);
界面設(shè)計(jì)方面通過RelativeLayout實(shí)現(xiàn)布局,使用了TextView,ImageButton文件列表通
4
過ListView實(shí)現(xiàn)界面展示。該類通過繼承ListActivity類,用來顯示ListView中的數(shù)據(jù)并實(shí)現(xiàn)對(duì)ListView上ImageView控件點(diǎn)擊的統(tǒng)一響應(yīng)。 其主要代碼:public class MainActivity extends Activity
{//菜單選項(xiàng)
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,
"歡迎使用簡(jiǎn)易日記本", 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篇三:安卓學(xué)習(xí)日記
2016.2.21
今天開始以類的方式來分析整個(gè)工程,之前做的太繁瑣了。沒有條理性,目的應(yīng)該是要看java和andorid的源碼,弄清楚為什么要這樣寫。
首先還是看main activity
一個(gè)imageButton
就是可以加圖片的按鈕,我們一般喜歡用按下和不按下是不同顏色的,這里我們可以通過在按下和不按下的時(shí)候用不同的圖片來做到
這里用到了xml的selector機(jī)制
如果單獨(dú)只要一個(gè)圖片的話,可以寫
setImageReource(int )
這樣也可以。
我們看到它在androdi:src=”@android:drawable/ic_menu_camera”
這里不是寫的@drawable
而是@android:drawable
這個(gè)是因?yàn)閍ndroid的sdk里面本身就有很多的圖片素材,在
D:\elipse\eclipse\sdk\platforms\android-21\data\res\drawable-hdpi
里面
實(shí)際編一下發(fā)現(xiàn)自己啥都不會(huì)了,首先就是這個(gè)manifest
看一下manifest有什么作用
manifest這個(gè)東西是一個(gè)叫做AndroidManifest.xml的文件,而且也只能叫做這個(gè)名字
這個(gè)東西必須要位于app的根目錄
1、這個(gè)manifest必須要提供這個(gè)app的包名,用這個(gè)包名來唯一確定我這個(gè)app
而且在gen這個(gè)目錄里面,就是自動(dòng)生成R的那個(gè)目錄里面,這個(gè)報(bào)名就是我這個(gè)app的包名
所以manifest最基本的寫法就是
<manifest
xmlns:android=
package=”com.maowei.test”
>
</manifest>
2、manifest要描述一些這個(gè)app所需要具備的條件:比如sdk版本信息、app所需要具備的權(quán)限等等。
<uses-sdk
android:minSdkVersion=“16”
android:targetSdkVersion=”21”/>
<manifest>和<appalication>是有且僅有一次的。
如果要定義一個(gè)<activity>,<service>,<BroadcastReceiver>,<ContentProvider>那么需要指明name屬性,這個(gè)name需要和對(duì)應(yīng)的包名的完整路徑一致
但是這里有這樣一個(gè)情況,比如我的manifest里面聲明了
<manifest package=”com.maowei.test”…>
<appalication…>
<activity android:name=”com.maowei.test.SecretService”…>
</activity>
</appalication>
</manifest>
因?yàn)槲疫@里activity前面的部分對(duì)應(yīng)的和manifest的package是一樣的,我就可以簡(jiǎn)寫成 <manifest package=”com.maowei.test”…>
<appalication…>
<activity android:name=”.SecretService”…>
</activity>
</appalication>
</manifest>
注意前面是有一個(gè)”.”的
本來我以為寫了manifest,appalication,activity就好了,但是實(shí)際過程中發(fā)現(xiàn)了一個(gè)問題,就是這個(gè)程序安裝了,卻沒有圖標(biāo),也不能正常啟動(dòng)。導(dǎo)致你在android的桌面上根本找不到這個(gè)app
后來加了一個(gè)<intent-filter>就好了,
這樣寫的
所以很有必要看一下intent-filter的內(nèi)容
首先就要說一下intent這個(gè)類,這個(gè)是用來描述一系列操作信息的一個(gè)類。
這個(gè)問題解決了為什么我們的activity之間是可以相互跳轉(zhuǎn)的。
比如我們要從一個(gè)activity跳轉(zhuǎn)到另一個(gè)activity,一般我們會(huì)有一個(gè)觸發(fā)事件,比如一個(gè)button被按下了,那么為什么按下了就會(huì)跳到另一個(gè)activity呢,因?yàn)槲覀冊(cè)赽utton的onClickListener里面new了一個(gè)intent,這個(gè)intent會(huì)跳到我們指定的activity
這個(gè)就是顯式intent的作用,直接說明,從哪個(gè)activity跳到哪個(gè)activity(intent不止可以完成activity到activity之間的跳轉(zhuǎn),還可以啟動(dòng)Service、還有Broadcast等等) 這里以activity為例子
比如我要從activity1跳轉(zhuǎn)到activity2
那么我就在activity1里面這樣寫:
Intent intent1 = new Intent(this,activity2.class);
startActivity(intent);
這里用了intent的這個(gè)構(gòu)造函數(shù),用于從一個(gè)context跳到另一個(gè)類里面。
這里還用了startActivity(intent)這個(gè)函數(shù),這個(gè)是在Activity類里面的一個(gè)函數(shù)。
當(dāng)然intent里面還有對(duì)應(yīng)的方法可以設(shè)置需要在哪兩個(gè)組件之間跳轉(zhuǎn)
比如setComponent 1. ComponentName componentName = new ComponentName(this, SecondActivity.class);
2. // 或者
ComponentName componentName = new ComponentName(this, "com.example.app016.SecondActivity");
3. // 或者
ComponentName componentName = new ComponentName(this.getPackageName(), "com.example.app016.SecondActivity");
4.
5. Intent intent = new Intent();
6. intent.setComponent(componentName);
7. startActivity(intent);
還有直接設(shè)置類的
setClass
Intent intent1 = new Intent();
intent1.setClass(this,activity2.class);
startActivity(intent1);
這種直接跳轉(zhuǎn)的方式就適合于那種我在一個(gè)應(yīng)用程序的內(nèi)部自己跳轉(zhuǎn)。
但是思考這樣一個(gè)問題,如果我一個(gè)應(yīng)用程序需要用到打電話這個(gè)功能,也就是說我需要從當(dāng)前的activity跳轉(zhuǎn)到系統(tǒng)的打電話的功能上面去的話,那么怎樣才可以呢?
又或者是不是打電話,而是一個(gè)分享的功能,我要分享到QQ、微博,但是我現(xiàn)在又不知道你手機(jī)上有沒有QQ,微博,那我怎么才能實(shí)現(xiàn)這個(gè)功能呢。
這里涉及到了android的一個(gè)輪詢機(jī)制,就是我在編這個(gè)app的時(shí)候就說明,我哪個(gè)activity是有怎樣的功能的,然后我在用其他的應(yīng)用程序如果需要這樣的功能,那么我就在我整個(gè)安裝的應(yīng)用程序里面找,那個(gè)app的哪個(gè)activity能夠滿足這樣的功能,那么我就可以控制直接跳轉(zhuǎn)到這個(gè)activity里面,從而完成了應(yīng)用程序之間的交互。
這里我們就發(fā)現(xiàn)了manifest這個(gè)東西,相當(dāng)于是定下了我這個(gè)app的一個(gè)特性,如果有什么用得到這個(gè)app的特點(diǎn)的話,我就可以通過輪詢?nèi)缓缶湍苓M(jìn)入這個(gè)app,下面看例子
如果來在manifest里面說明我這個(gè)app的特點(diǎn)呢?
用<intent-filter>
比如我在manifest里面寫了
<manifest xmlns:android=https://schemas.android.com/apk/res/android
package=”com.maowei.test”>
<application
android:icon=”@drawable/i(轉(zhuǎn) 載 于:www.zuancaijixie.com 蒲 公英文 摘:安卓日記app)c_launcher”>
<activity
android:name=”com.maowei.Test”
android:label = “@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN”/>
<category android:name=”android.intent.category.LAUNCHER”/>
</intent-filter>
</activity>
</application>
</manifest>
必須要有這個(gè)intent-filter
這樣我的這個(gè)app才能識(shí)別我進(jìn)入這個(gè)app的時(shí)候哪個(gè)是main,一開始進(jìn)入哪個(gè)activity
比如我聲明我的這個(gè)app有撥號(hào)功能
<activity
android:name=”com.maowei.Test”>
<intent-filter>
<action android:name=”android.intent.action.DIAL”>
<category android:name=”android.intent.category.DEFAULT”/>
</activity>
這樣,當(dāng)我另一個(gè)activity寫了個(gè)這個(gè)
Intent intent1 = new Intent(“android.intent.action.DIAL”);
startActivity(intent1);
這時(shí)候就會(huì)跳出一個(gè)提示框去讓你選擇所有intent_filter里面有這個(gè)撥號(hào)功能的程序
當(dāng)然,我們也可以自定義我們這個(gè)action的名字
比如 1. Intent intent = new Intent();
2. intent.setAction("abcdefg");
3. startActivity(intent);
但是這樣有個(gè)壞處,不便于管理,而且不同的app之間可能會(huì)有重復(fù)
相關(guān)熱詞搜索:日記 app 日本appstore有安卓嗎 妹調(diào)日記安卓
熱點(diǎn)文章閱讀