国产第页,国产精品视频一区二区三区,国产精品网站夜色,久久艹影院,精品国产第一页,欧美影视一区二区三区,国产在线欧美日韩精品一区二区

安卓日記app

發(fā)布時間:2017-02-14 來源: 日記大全 點擊:

安卓日記app篇一:安卓開發(fā)實習(xí)_個人日志

中軟國際 長沙ETC 實 習(xí) 實 訓(xùn) 日 志

安卓日記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篇三:安卓學(xué)習(xí)日記

2016.2.21

今天開始以類的方式來分析整個工程,之前做的太繁瑣了。沒有條理性,目的應(yīng)該是要看java和andorid的源碼,弄清楚為什么要這樣寫。

首先還是看main activity

一個imageButton

就是可以加圖片的按鈕,我們一般喜歡用按下和不按下是不同顏色的,這里我們可以通過在按下和不按下的時候用不同的圖片來做到

這里用到了xml的selector機(jī)制

如果單獨只要一個圖片的話,可以寫

setImageReource(int )

這樣也可以。

我們看到它在androdi:src=”@android:drawable/ic_menu_camera”

這里不是寫的@drawable

而是@android:drawable

這個是因為android的sdk里面本身就有很多的圖片素材,在

D:\elipse\eclipse\sdk\platforms\android-21\data\res\drawable-hdpi

里面

實際編一下發(fā)現(xiàn)自己啥都不會了,首先就是這個manifest

看一下manifest有什么作用

manifest這個東西是一個叫做AndroidManifest.xml的文件,而且也只能叫做這個名字

這個東西必須要位于app的根目錄

1、這個manifest必須要提供這個app的包名,用這個包名來唯一確定我這個app

而且在gen這個目錄里面,就是自動生成R的那個目錄里面,這個報名就是我這個app的包名

所以manifest最基本的寫法就是

<manifest

xmlns:android=

package=”com.maowei.test”

>

</manifest>

2、manifest要描述一些這個app所需要具備的條件:比如sdk版本信息、app所需要具備的權(quán)限等等。

<uses-sdk

android:minSdkVersion=“16”

android:targetSdkVersion=”21”/>

<manifest>和<appalication>是有且僅有一次的。

如果要定義一個<activity>,<service>,<BroadcastReceiver>,<ContentProvider>那么需要指明name屬性,這個name需要和對應(yīng)的包名的完整路徑一致

但是這里有這樣一個情況,比如我的manifest里面聲明了

<manifest package=”com.maowei.test”…>

<appalication…>

<activity android:name=”com.maowei.test.SecretService”…>

</activity>

</appalication>

</manifest>

因為我這里activity前面的部分對應(yīng)的和manifest的package是一樣的,我就可以簡寫成 <manifest package=”com.maowei.test”…>

<appalication…>

<activity android:name=”.SecretService”…>

</activity>

</appalication>

</manifest>

注意前面是有一個”.”的

本來我以為寫了manifest,appalication,activity就好了,但是實際過程中發(fā)現(xiàn)了一個問題,就是這個程序安裝了,卻沒有圖標(biāo),也不能正常啟動。導(dǎo)致你在android的桌面上根本找不到這個app

后來加了一個<intent-filter>就好了,

這樣寫的

所以很有必要看一下intent-filter的內(nèi)容

首先就要說一下intent這個類,這個是用來描述一系列操作信息的一個類。

這個問題解決了為什么我們的activity之間是可以相互跳轉(zhuǎn)的。

比如我們要從一個activity跳轉(zhuǎn)到另一個activity,一般我們會有一個觸發(fā)事件,比如一個button被按下了,那么為什么按下了就會跳到另一個activity呢,因為我們在button的onClickListener里面new了一個intent,這個intent會跳到我們指定的activity

這個就是顯式intent的作用,直接說明,從哪個activity跳到哪個activity(intent不止可以完成activity到activity之間的跳轉(zhuǎn),還可以啟動Service、還有Broadcast等等) 這里以activity為例子

比如我要從activity1跳轉(zhuǎn)到activity2

那么我就在activity1里面這樣寫:

Intent intent1 = new Intent(this,activity2.class);

startActivity(intent);

這里用了intent的這個構(gòu)造函數(shù),用于從一個context跳到另一個類里面。

這里還用了startActivity(intent)這個函數(shù),這個是在Activity類里面的一個函數(shù)。

當(dāng)然intent里面還有對應(yīng)的方法可以設(shè)置需要在哪兩個組件之間跳轉(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)的方式就適合于那種我在一個應(yīng)用程序的內(nèi)部自己跳轉(zhuǎn)。

但是思考這樣一個問題,如果我一個應(yīng)用程序需要用到打電話這個功能,也就是說我需要從當(dāng)前的activity跳轉(zhuǎn)到系統(tǒng)的打電話的功能上面去的話,那么怎樣才可以呢?

又或者是不是打電話,而是一個分享的功能,我要分享到QQ、微博,但是我現(xiàn)在又不知道你手機(jī)上有沒有QQ,微博,那我怎么才能實現(xiàn)這個功能呢。

這里涉及到了android的一個輪詢機(jī)制,就是我在編這個app的時候就說明,我哪個activity是有怎樣的功能的,然后我在用其他的應(yīng)用程序如果需要這樣的功能,那么我就在我整個安裝的應(yīng)用程序里面找,那個app的哪個activity能夠滿足這樣的功能,那么我就可以控制直接跳轉(zhuǎn)到這個activity里面,從而完成了應(yīng)用程序之間的交互。

這里我們就發(fā)現(xiàn)了manifest這個東西,相當(dāng)于是定下了我這個app的一個特性,如果有什么用得到這個app的特點的話,我就可以通過輪詢?nèi)缓缶湍苓M(jìn)入這個app,下面看例子

如果來在manifest里面說明我這個app的特點呢?

用<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.huhawan.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>

必須要有這個intent-filter

這樣我的這個app才能識別我進(jìn)入這個app的時候哪個是main,一開始進(jìn)入哪個activity

比如我聲明我的這個app有撥號功能

<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)我另一個activity寫了個這個

Intent intent1 = new Intent(“android.intent.action.DIAL”);

startActivity(intent1);

這時候就會跳出一個提示框去讓你選擇所有intent_filter里面有這個撥號功能的程序

當(dāng)然,我們也可以自定義我們這個action的名字

比如 1. Intent intent = new Intent();

2. intent.setAction("abcdefg");

3. startActivity(intent);

但是這樣有個壞處,不便于管理,而且不同的app之間可能會有重復(fù)

相關(guān)熱詞搜索:日記 app 日本appstore有安卓嗎 妹調(diào)日記安卓

版權(quán)所有 蒲公英文摘 www.huhawan.com