Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 中級開發 >> Android入門開發指南之Notepad 練習(上)

Android入門開發指南之Notepad 練習(上)

編輯:中級開發

在這個練習中,你將創建一個簡單的文本列表,讓用戶添加文本但是不能編輯它們,這個例子演示了:
·          ListActivitIEs的基本用法,創建和處理菜單選項。
·          如何訪問和保存文本到SQLife數據庫中。
·          如何使用ArrayAdapter(最簡單的綁定ListView的方法)綁定相互聚到一個ListVIEw。
·          基本的屏幕布局,包括如何布局列表視圖,如何添加條目到實體菜單,屍體如何處理這些菜單的選種動作。
[Exercise 1] [Exercise 2] [Exercise 3] [Extra Credit] 
第1步
在Eclipse中打開Notepadv1工程。
Notepadv1工程提供一個起點,它關心的事建立樣板文件的工作,如果你學習過Hello android tutorial例子,你對這些應該比較熟悉。操作步驟如下:
a.      在包浏覽器中右擊,選擇導入../一般/現有工程進入工作區。
b.      點擊浏覽按鈕,移動到你復制三個練習的文件夾,選擇Notepadv1文件夾,然後點擊OK.
c.       你將看到Notepadv1列在工程列表中,並且後面帶有一個選擇框。
d.      點擊結束。
e.      這個練習工程將打開並且列出在Eclipse的包浏覽器中。
f.         如果你看到一個關於androidManifest.XML的錯誤,或者其它關於Android壓縮文件的錯誤,右擊工程從彈出菜單中選擇android Tools-> Fix Project PropertIEs (對庫文件而言,工程處在不正確的未知,這樣操作可以修復它)。
第2步
訪問和修改數據
這個練習中,我們將使用一個SQLite數據庫來直接保存我們的數據,但是在實際的應用,使用一個合適的ContentProvider簡化這個行為的方法更為普遍。
如果你感興趣,你可以找到關於content providers的更多信息,或者你可以參考關於存儲,獲得和刷新數據的主題。
注意這個類DBHelper --- 這個類提供來壓縮數據到一個SQLite數據庫來保存我們的文本數據並且允許我們更新它。
典型情況下你將使用ContrentProvider來執行,事實上,在SDK中的完整的Notepad應用就是執行的這樣一個ContentProvider。然而,沒有理由你不和我們這裡一樣直接使用自己的SQLite數據庫。關鍵值得注意的問題是這個類為我們提供的存儲,獲取和更新SQLite數據庫中的數據的細節。許多方法又來獲取多行,根據行標識獲取一行,創建一個新的行,刪除一個存在的行和更新一行數據。如果你想獲取如何在我們的應用中使用SQLite數據庫的指南,你可以詳細閱讀這個類的文檔或者,更好的辦法就是,查看SDK中samples/目錄下的Notepad應用程序時如何使用ContentProvider的。
第3步
布局和實體
許多實體都關聯一個布局。布局是實體面向用戶的臉面。在這個例子中,我們的布局將布滿全屏並且提供一個文本列表。
全屏布局不是實體唯一的選擇。你可以參考一個浮動布局(例如,一個對話框或者警告欄),或者某些情況下你根本就不需要布局(實體將對用戶隱藏直到你為它指定某個布局)。
打開res/layout目錄下的notepad_list.XML文件來查看:這是一個布局定義文件,帶有一個默認的起點,我們提供了注解方便你更快的掌握它:
a.      所有的android布局文件都以XML行開頭<?XML version="1.0" encoding="utf-8"?>。
b.      同樣下面的定義通常是一些布局文件的定義,在這個例子中是LinearLayout。
c.       注意在android中的XML名字空間應當定義在最外層的布局中,因此android:tags就可以用在甚於的文件中。
XMLns:android=http://schemas.android.com/apk/res/android
 
第4步
 
我們需要創建布局來容納我們的列表。調價代碼到LinearLayout標簽中,因此整個文件看起來就像是這個樣子的:(你可能需要順序點擊source tab頁來編輯這個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 id="@id/android:list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
 <TextVIEw id="@id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/no_notes"/>
 
</LinearLayout>
a.      ListView和TextView可以作為兩個可切換的視圖,每次只能顯示一個。ListView用來顯示文本列表,而TextVIEw(是一個字符串資源,默認值為”No Notes Yet!”,如果沒有文本是顯示這個字符串)。
b.      ListView和TextVIEw字符串中的@字符表示XML分析器將使用一個資源標識來分析和展開字符串中剩余的部分。
c.       android:list 和android:empty是Android平台為我們提供的標簽,當列表適配器中沒有數據時,empty默認參數。列表適配器知道去搜索默認的特殊字。可選擇的做法是,你可以使用列表適配器的setEmptyVIEw()方法選擇改變默認的empty視圖。更廣泛的是,android.R類是系統提供的一套預定義資源,而你的工程的R類是一套你自己定義的資源。android.R資源類中存在的西元可以XML文件中使用,方法是android:名字空間前綴(就像我們看到的那樣)。
第5步
資源和R類
Eclipse工程中的res/目錄比較特殊。這個目錄以及其下的文件有一個特殊的結構。
特殊地方就是,定義在這些文件夾和文件中的資源在R類中都有相應的入口,可以允許它們被你的應用程序簡單地訪問。此外,它們被綁定和配置為應用程序的一部分。
為了生成一個視圖,我們需要定義視圖列表中的每一行:
a.      在res/下創建一個新的文件布局,名字為notes_row.XML.
b.      添加下列內容(注意:xml頭再一次使用,第一個節點定義android XML 名字空間)。
c.         <?XML version="1.0" encoding="utf-8"?>
d.         <TextVIEw id="@+id/text1"
e.             XMLns:android="http://schemas.android.com/apk/res/android"
f.             android:layout_width="wrap_content"
g.             android:layout_height="wrap_content"/>
      
h.       這是每一個文本標題行所使用的視圖,它只有一個文本域。
i.         在這個例子中,我們新建了一個新的標識叫做text1,標識字串中’@’後的’+’標示如果沒有存在的標識,那麼將自動創建,所以我們在上面定義和使用text1作為標識。
j.         保存文件後,打開工程中的R.Java類進行觀察,你會發現關於notes_row和text1的新定義(我們自己定義,非系統自動生成),這意味著我們能夠從我們的代碼中獲取訪問。
第6步
接著,打開源代碼中的Notepadv1類,我們繼續修改這個類,讓它成為一個列表適配器並且能夠顯示我們的文本文件,同時能讓我們添加新的文本文件。
Notepadv1作為Activity的子類調用ListActivity,它有強大的功能,能提供列表實現你所希望的功能,例如:多行顯示一個任意數量的列表項在屏幕上,移動列表項,允許它們被選中等等。仔細觀察Notepadv1類中的代碼,頂部有許多常量定義,接下來就是我們用來創建文本標題的私有域,還有一些超類方法的重寫方法。
第7步
將Notepadv1的集成類從Activity修改為ListActivity,定義如下:
public class Notepadv1 extends ListActivity
注意:你必須導入ListActivity到你的Notepadv1類中,在Eclipse中,在Windows或Linux下你可以使用ctrl-shift-O的快捷鍵,或者在Mac(organize imports)中使用cmd-shift-O完成相同的功能。
 
第8步
已經有三個重寫的方法定義:onCreate,onCreateOptionsMenu和onOptionsItemSelected,我們將填入我們的代碼。
·          onCreate()當activity啟動時調用—它對activity的作用有一點像’main’函數。當它啟動時,我們使用這個來為activity建立資源和狀態。
·          onCreateOptionsMenu()用來為activity創建菜單。當用戶點擊menu按鈕是顯示,你可以選擇彈出來的一組選項(比如”Create Note”)。
·          onOptionsItemSelected()是菜單功能實現的另外一個重要部分,它用來處理從菜單中生成的事件(例如,當用戶選擇”Create Note”項時)。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved