android真正入門不坑的教程-基礎(chǔ)的基礎(chǔ)_第1頁
android真正入門不坑的教程-基礎(chǔ)的基礎(chǔ)_第2頁
android真正入門不坑的教程-基礎(chǔ)的基礎(chǔ)_第3頁
android真正入門不坑的教程-基礎(chǔ)的基礎(chǔ)_第4頁
android真正入門不坑的教程-基礎(chǔ)的基礎(chǔ)_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

./第一篇、提綱挈領(lǐng)智能的機操作系統(tǒng)經(jīng)過多盤廝殺,到現(xiàn)在形成了三足鼎立之勢:Android、iOS、Windowsphone8三者一統(tǒng)天下.而其他的諸如SymbianS60,UIQ,WindowsMobile,Linux,Brew、Blackberry……則成為了過眼煙云.今天,Android更是在市場上有75%的占有率;在國內(nèi)比例更甚,達到90%之多.有人說:上一個十年是互聯(lián)網(wǎng)時代;這個十年就是移動互聯(lián)時代!你還在等什么?一、手機的發(fā)展史1844年5月24日.莫爾斯的電報機從華盛頓向巴爾的摩發(fā)出人類歷史的第一份電報"上帝創(chuàng)造了何等奇跡!"

1875年6月2日,貝爾做實驗的時候,不小心把硫酸濺到了自己的腿上.他疼得對另一個房間的同事喊到"活,快來幫我啊!"而這句話通過實驗中的電話傳到了在另一個房間接聽電話的活特耳里,成為人類通過電話傳送的第一句話.

1831年,英國的法拉第發(fā)現(xiàn)了電磁感應(yīng)現(xiàn)象,麥克斯韋進一步用數(shù)學(xué)公式闡述了法拉第等人的研究成果,并把電磁感應(yīng)理論推廣到了空間.而60多年后赫茲在實驗中證實了電磁波的存在.

電磁波的發(fā)現(xiàn),成為"有線電通信"向"無線電通信"的轉(zhuǎn)折點,也成為整個移動通信的發(fā)源點.正如一位科學(xué)家說的那樣"手機是踩著電報和電話等的肩膀降生的,沒有前人的努力,無線通信無從談起."

1973年4月的一天,一名男子站在紐約的街頭,掏出一個約有兩塊磚頭大的無線電話,并開始通話.這個人就是手機的發(fā)明者馬丁庫泊.當(dāng)時他還是摩托羅拉公司的工程技術(shù)人員.這是當(dāng)時世界上第一部移動電話.

1975年,美國聯(lián)邦通信委員會<FCC>確定了陸地移動電話通信和大容量蜂窩移動電話的頻譜.為移動電話投入商用做好了準備.

1979年,日本開放了世界上第一個蜂窩移動電話網(wǎng).

1982年歐洲成立了GSM<移動通信特別組>

1985年,第一臺現(xiàn)代意義上的可以商用的移動電話誕生.它是將電源和天線放置在一個例子里,重量達3公斤.與現(xiàn)代形狀接近的手機,則誕生于1987年.其重量仍有大約750克,與今天僅重60克的手機相比,象一塊大磚頭.此后,手機的"瘦身"越來越迅速.1991年,手機重量為250克左右.1996年秋出現(xiàn)了體積為100立方厘米,重量為100克的手機.此后又進一步小型化,輕型化,到1999年就輕到了60克以下.二、智能手機發(fā)展史世界上第一部智能手機是摩托羅拉在2000年生產(chǎn)的名為天拓A6188的手機.該手機是全球第一部智能手機,也是第一部具有觸摸屏的PDA手機,它同時還是第一部中文手寫識別輸入的手機,但最重要的是A6188采用了摩托羅拉公司自主研發(fā)的龍珠〔DragonballEZ>16MHzCPU,支持WAP1.1無線上網(wǎng),采用了PPSM〔PersonalPortableSystemsManager操作系統(tǒng).龍珠〔DragonballEZ>16MHzCPU也成為了第一款在智能手機上運用的處理器,雖然只有16MHz,但它為以后的智能手機處理器奠定了基礎(chǔ),有著里程碑的意義.三、認識AndroidAndroid最早由安迪·羅賓<AndyRubin創(chuàng)辦,于2007年被Google公司收購,Google公司憑借Android操作系統(tǒng)在智能手機上取得了巨大的成功.如果以前你對智能機了解不多也沒有關(guān)系,你能感覺到現(xiàn)在的手機除了能夠打電話、發(fā)短信之外,越來越像一臺功能強大的小電腦就OK了!四、修煉之道1、不論章法,實現(xiàn)就好對于我們菜鳥級別,初學(xué)的時候很多朋友聽了網(wǎng)上傳言的"學(xué)編程要六級以上英語,高等數(shù)學(xué)更是要過硬"以致于很多朋友只能"高山仰止"!而實際上初學(xué)者經(jīng)驗不足,初入此道,程序可能存在種種錯誤和BUG,但是這都不能影響我們學(xué)習(xí)的決心和勇氣,就像學(xué)開車,即使你從駕校出來有了駕照,剛上路仍然感覺手忙腳亂,眼睛不夠用一樣,隨著你的車技嫻熟,你會變得從容起來,編程一樣.

不要怕錯,學(xué)編程比開車要好得多,無論如何你都不會"闖車禍",大不了重來,怕什么,誰不是從1、2、3開始學(xué)起的?。?、規(guī)范有序有了一定的經(jīng)驗就不能像初始階段,程序逐漸開始規(guī)范,無論變量的命名還是各種文檔,并且注重程序的運行效率等等.我們都講:細節(jié)決定成敗,但往往是"嚴于律人,寬以待己",這樣不好!細節(jié)不是喊一聲就會出現(xiàn)在你面前的,這是一個需要不斷學(xué)習(xí)和實踐.這個過程有長有短,要看個人的學(xué)習(xí)能力,領(lǐng)悟能力.

做到內(nèi)外兼修,內(nèi),指的是需求把握,設(shè)計思想,設(shè)計模式等.外,指的是寫代碼時的規(guī)范,做界面時的嚴謹?shù)?

3、用戶體驗因為我們設(shè)計的程序最終是給用戶用的,要注意用戶體驗.人性化則顯得至關(guān)重要.

4、學(xué)無止境入門也許是容易的,但是想達到大師級別真不是一件容易的事.

冰凍三尺,非一日之寒.良好的開端,等于成功了一半.工欲善其事,必先利其器.如何搭建Android的開發(fā)環(huán)境?讓我們今天一探究竟!五、準備工作我們開發(fā)Android手機App程序需要準備兩樣寶貝:JavaJDK、AndroidSDK〔ADT即AndroidDevelopTools縮寫.1、JavaJDK如果你電腦上沒有安裝Java環(huán)境或者你想使用最新版本,請從下面地址下載最新版本:下載地址:〔1第一步、單擊下圖中的①的DOWNLOAD,即JavaPlatform<JDK>7u9〔2第二步、單選AcceptLicenseAgreement,然后選擇Windowsx86下載.〔注:windowsX86代表32位操作系統(tǒng);windowsX64代表64位操作系統(tǒng).如果你不知道你的操作系統(tǒng)是?位,很簡單,選擇桌面"計算機"單擊右鍵,查看屬性一看就明白了!2、AndroidSDKAndroidSDK為我們提供了API鏈接庫以及用于建立、測試與調(diào)試android應(yīng)用的開發(fā)工具的集合.下載地址:六、軟件安裝如果你的網(wǎng)速不夠快,那么就請你倒杯茶,邊下載邊看以下安裝步驟.1、第一步,安裝jdk7u9〔jdk-7u9-windows-i586.exe雙擊jdk-7u9-windows-i586.exe安裝,單擊下一步下一步,直到完成即可,無需配置環(huán)境變量.2、第二步,安裝SDK和EclipseIDE〔adt-bundle-windows-x86.zip〔1解壓adt-bundle-windows-x86.zip文件至合適的位置,會生成adt-bundle-windows-x86文件夾,在adt-bundle-windows-x86文件夾又有兩個子文件夾:eclipse和sdk.〔2打開adt-bundle-windows-x86/eclipse文件夾,然后啟動eclipse.exe程序.當(dāng)然你也可以把eclipse.exe程序發(fā)送到桌面建立一個快捷方式.至此,我們環(huán)境已經(jīng)全部安裝好了,就這么簡單!EclipseIDE集成開發(fā)已經(jīng)幫我們準備好了開發(fā)環(huán)境,而且SDK也已經(jīng)自動準備就緒,萬事俱備!就等著你開始開發(fā)第一個AndroidApp了!注:不要從adt-bundle-windows-x86文件夾中移走任何文件,否則你將要進行手動配置環(huán)境或者以后的升級.最為經(jīng)典的"Hello,world!"之AndroidApp應(yīng)用程序即將在你自己的手機上運行,你是不是心潮澎湃呢?稍安勿躁,你馬上就可以實現(xiàn)!附:網(wǎng)上比較流行的Android的開發(fā)環(huán)境常常為JDK+Eclipse+SDK三大利器進行配置,如果你喜歡,你可以百度一下!而Google現(xiàn)在非常推薦你采用本文的方式,尤其你如果是一名新手!我一直猶豫如何講解這個開篇之作,但發(fā)現(xiàn)的IDE開發(fā)環(huán)境做得越來越智能,基本上一路回車就可以搞定一個簡單的應(yīng)用.一、第一步,啟動Eclipse

單擊桌面Eclipse快捷方式,啟動EclipseIDE開發(fā)環(huán)境.二、第二步,建立Android項目

選擇菜單file->new->androidapplicationproject1、選擇workspace〔SelectaworkspaceEclipse第一次建立AndroidProject會讓你選擇workspace〔workspace通俗地講就是把你的項目存到哪個文件夾內(nèi),在本案例中我存放到D:\Apps,如果勾選了復(fù)選框,下一次建立AndroidProject就不會再出同這個對話框了.2、新建Android應(yīng)用程序〔NewAndroidApplicationo〔你可以使用別的包名,習(xí)慣用這個域名倒寫的方式

TargetSDK:如果你采用真機測試,看看你的真機所支持的Android版本.

CompileWith:編譯可以選擇最新版本.然后單擊"Next>"按鈕,進入下一步.3、配置Project〔ConfigureProject

采用默認設(shè)置就可以了.然后單擊"Next>"按鈕,進入下一步.4、配置應(yīng)用圖標Icon〔ConfigureLauncherIcon然后單擊"Next>"按鈕,進入下一步.5、新建空白Activity〔NewBlankActivity然后單擊"Finish"按鈕,打開項目主界面.6、Hello項目主界面你可能一下子被整個界面弄暈了,太復(fù)雜了,這么多文件夾,實際上將來我們所有關(guān)心的東西并不多,別害怕,我們只要知道①②③都是干什么的就夠了.其中①表示項目文件管理區(qū);②表示控件區(qū);③表示界面預(yù)覽區(qū).三、第三步,建立虛擬設(shè)備

如果你還沒有一臺運行Android的設(shè)備〔手機,那么我們需要建立一個虛擬設(shè)備.

當(dāng)然你最好有一臺真正能夠運行Android的設(shè)備,你也可以跳過這一步.

1、選擇菜單window->AndroidVirtualDeviceManager2、打開Android虛擬設(shè)備管理器〔AndroidVirtualDeviceManager

單擊"New…"按鈕.3、新建Android虛擬設(shè)備〔CreateAndroidVirtualDevice

我們在窗口輸入:

AVDName:HTC〔你可以高興輸入別的任何名稱

Device:選擇一款合適的屏〔包括尺寸與分辨率然后單擊"OK"按鈕.4、虛擬設(shè)備管理器〔AndroidVirtualDeviceManager就多出來了一款"HTC"設(shè)備.四、第四步,運行程序

1、選擇菜單Run->Run〔Ctrl+F112、選擇AndroidDevice設(shè)備

我們有兩種選擇:使用真機或者虛擬設(shè)備.〔在本案例中采用華為9200真機.3、運行結(jié)果

至此,我們第一個AndroidApp正式誕生了,舉杯慶賀一下吧!你也正式進入移動開發(fā)的行列,未來的十年"移動互聯(lián)"有你!

當(dāng)然,我們僅僅是一個開始!盡管經(jīng)典之中的經(jīng)典Hello,world!已經(jīng)悄然運行在我們的手機上了,但如果現(xiàn)在讓你告訴別人你會Android開發(fā),估計你自己都心虛,讓我們一起再會Hello,world!項目,揭開廬山真面目.第一次在Eclipse中看Android項目工作區(qū)估計眼都花了,頭都暈了,你一定會想:這么復(fù)雜!

但事實上,可能會比你想得簡單,而且我們采取循序漸進方式,你很快就會掌握的.七、Android項目工作區(qū)概覽新建一個Android項目,Eclipse會自動幫我們建立諸多文件,我們看一下:其中:

第①部分:表示Java源程序;

第②部分:代表系統(tǒng)資源ID,類似于C語言的*.h文件,請千萬不要手工修改R.java文件;

第③部分:Android4.2表示當(dāng)前SDK是4.2,是目前最新版本;

第④部分:表示資源文件,其中l(wèi)ayout布局你可以認為就是界面;

第⑤部分:每一個Android項目都包含一個清單<Manifest>文件--AndroidManifest.xml,它存儲在項目層次中的最底層.清單可以定義應(yīng)用程序及其組件的結(jié)構(gòu)和元數(shù)據(jù).

如果你想了解更多AndroidManifest.xml,請單擊了解更多>>Android項目中主要文件及文件夾的作用:〔1src:存放所有的*.java源程序.

〔2gen:為ADT插件自動生成的代碼文件保存路徑,其中的R.java文件將保存所有的資源ID.

〔3Android4.2:表示現(xiàn)在使用的AndroidSDK的版本是4.2.

〔4assets:可以存放項目中一些較大的資源文件,如圖片、音樂、字體等.

〔5res:可以存放項目中所有的資源文件,如圖片〔*.png、*.jpg、網(wǎng)頁〔*.html、文本等.

〔6res\drawable-hdpi:保存高分辨率圖片資源.

〔7res\drawable-ldpi:保存低分辨率圖片資源.

〔8res\drawable-mdpi:保存中等分辨率圖片資源.

〔9res\layout:存放所有布局文件,主要是用于排列不同的顯示組件,在Android程序要讀取此配置.

〔10res\values:存放一些資源文件信息,用于讀取文本資源,在文件夾中有一些約定的文件名稱.〔具體內(nèi)容待以后詳解

〔11res\raw:自定義的一些原生文件所在目錄,如音樂、視頻等文件格式.

〔12res\xml:用戶自定義的XML文件,所有的文件在程序運行時編譯到應(yīng)用程序中.

〔13res\anim:用于定義動畫對象.

〔14activity_main:配置所有的控件.

〔15R.java:此文件為自動生成并自動維護的,用戶添加的控件會自動在此文件中生成一個唯一的ID,以供程序使用.

〔16AndroidManifest.xml:主要配置文件,用于配置各個組件或一些訪問權(quán)限等.

總之,看著真的夠復(fù)雜,你先有個印象就可以了.至少,你應(yīng)該知道源文件是放在src文件夾;布局文件在res/layout文件夾,其他以后了解也ok.八、Android項目分析1、布局文件〔res\layout\activity_main.xml雙擊"res\layout\activity_main.xml"打開布局文件.注意①代表布局文件圖形界面;②代表布局文件代碼界面.AndroidApp應(yīng)用程序類似于.net的Winform程序,其中①和②相當(dāng)于標題欄,①為標題欄的圖標,②為標題;③代表標簽<TextViw>,類似于眾多程序的Label.我們再來看一下代碼:TextCopytoclipboardPrint<RelativeLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:text="@string/hello_world"/></RelativeLayout>希望你在探討本段代碼之前,至少至少要有XML文件的概念,如果沒有請了解這后再來繼續(xù)學(xué)習(xí).本段代碼包含了兩個重要標簽:<RelativeLayout>和<TextView>,<RelativeLayout>代表線性布局管理器;<TextView>代表標簽組件.其它的皆為兩個標簽的屬性.我們著重來看一下:android:text="@string/hello_world",我們的運行結(jié)果是"Helloworld!"而不是"hello_world"!Why?2、strings文本資源文件〔res\values\strings.xml雙擊"res\values\strings.xml"打開文本資源文件.與布局文件一樣:①代表文本資源圖形界面;②代表文本資源代碼界面.我們打開文本資源strings.xml文件之后,當(dāng)我們看到:<stringname="hello_world">Helloworld!</string>前面的疑慮應(yīng)該頓消,原來如此??!hello_world是文本資源文件中的一個標簽而已,其真正的內(nèi)容是"Helloworld!".你可以通過圖形界面或者字符界面添加一個字符串資源,究竟你選擇哪種,隨你高興!3、R.java文件〔gen/com.genwoxue.hello/R.java雙擊"gen/com.genwoxue.hello/R.java"打開資源ID文件.R.java資源文件保存所有資源的ID,譬如前面所講的hello_world,在這里就是一個整數(shù)0x7f040001而已.如果你感覺這個文件很奇怪也很正常,除非你曾經(jīng)學(xué)習(xí)或者寫過Cforwindows應(yīng)用程序就早已習(xí)以為常了.這個文件你最好只是看看,不要動它?。?!4、AndroidManifest.xml文件雙擊"AndroidManifest.xml"項目配置文件.所有的Activity程序都在AndroidManifest.xml文件中進行注冊,故該文件是整個Android項目的核心配置文件.在<application>節(jié)點中配置的android:icon="@drawable/ic_launcher",表示引用drawable〔drawable-hdpi、drawable-ldpi、drawable-mdpi三個文件夾中導(dǎo)入資源配置的圖標,引入圖標的名稱為ic_launcher.現(xiàn)在你可以更換應(yīng)用程序圖標了,你知道了它在哪!在<application>節(jié)點中配置的android:label="@string/app_name",表示此應(yīng)用程序的標簽名稱從strings.xml文件中讀取,內(nèi)容為app_name對應(yīng)的內(nèi)容.現(xiàn)在你也可以更換應(yīng)用程序標題了,你知道了它在哪!當(dāng)然,你還可以更改Activity的標題,什么是Activity?Activity就是一個活動的窗體,一個項目應(yīng)用程序可以包含多個Activity.5、MainActivity.java〔src/com.genwoxue.hello/MainActivity.javativity.java"程序文件.本程序是Android整個項目的主程序,Activity是項目的基本組成部分.MainActivity繼承Activity類,onCreate<>方法是啟動Activity地默認調(diào)用的方法.super.onCreate<savedInstanceState>:調(diào)用父類的onCreate<>方法;setContentView<R.layout.activity_main>:調(diào)用布局文件.我相信你的Android手機上一定安裝了不少Android應(yīng)用,那么如果把我們的Android程序發(fā)布為Android應(yīng)用,以便讓別人使用呢?

1、選擇File—>Export命令,在打開的界面中選擇Android—>ExportAndroidApplication文件.單擊"Next>"按鈕,選擇要導(dǎo)出的項目.2、可以通過"Browse..."按鈕選擇Hello這個項目,如果項目處于打開狀態(tài),會默認當(dāng)前項目.單擊"Next>"按鈕,進入創(chuàng)建證書界面.3、導(dǎo)出項目,必須要有證書,我們可以選擇已經(jīng)存在的證書或者創(chuàng)建證書,我們選擇"Createnewkeystore".

在此,我們輸入:

Location:D:\Hello〔我們可以起一個不同于項目的名稱

Password和Confirm:123456則在D盤根目錄下創(chuàng)建了Hello證書.單擊"next>"按鈕,進入證書完整界面.4、填寫完整的證書信息.

①部分為證書別名與有效年限;

②部分為開發(fā)者相關(guān)信息.單擊"Next>"按鈕,進入導(dǎo)出AndroidApplication界面.5、導(dǎo)出項目〔ExportAndroidApplication

輸入D:\Hello.apk,發(fā)布到D盤根目錄.

你也可以保存到別的文件夾,但注意該文件夾一定要存在.單擊"Finish"按鈕完成整個項目發(fā)布過程.

現(xiàn)在,你可以采取你喜歡的任意方式〔可以通過數(shù)據(jù)線、藍牙或者發(fā)布到Android應(yīng)用商店供別人下載使用.第二篇、幾個有用的程序帶你進入這個android世界編輯框EditText與按鈕Button在一個應(yīng)用中,登錄是經(jīng)常使用的,下面我們學(xué)習(xí)一下如何開發(fā)一個登錄窗口.我們需要學(xué)習(xí)Android中的基本控件:<1>EditText編輯框、<2>Button按鈕.一、設(shè)計登錄窗口打開"res/layout/activity_main.xml"文件.

1、分別從工具欄向activity拖出2個EditText〔來自TextFields、1個按鈕〔來自FormWidgets.2、打開activity_main.xml文件.

代碼自動生成如下:注意①和②雖同為EditText,但②要輸入密碼,故android:inputType="textPassword".3、我們把以上代碼修改成如下代碼,具體為:editText1變?yōu)閡serName;eidtText2變?yōu)閜assWord;buttion1變?yōu)閘ogin.登錄按鈕的文本:android:text="Button"變?yōu)?登錄".4、界面如下:現(xiàn)在運行程序,已經(jīng)在手機上看起來很像一個登錄窗口了.但是,我們單擊"登錄"按鈕,卻沒有什么反應(yīng).我們下面學(xué)習(xí)如何在"登錄"按鈕上添加單擊事件.二、單擊事件打開"src/com.genwoxue.edittextbutton/MainActivity.java"文件.

然后輸入以下代碼:在以上代碼中,我們著重分析一下帶有淺藍色背景部分,其它是最簡單的基礎(chǔ)代碼,如果不明白,請參考上一章內(nèi)容.1、第①部分

導(dǎo)入5個包.2、第②部分

聲明三個控件變量.3、第③部分

這一部分findViewById<>方法是一個關(guān)鍵,這個方法表示從R.java文件中找到一個View〔注意:我們可以把控件和Acitivity都當(dāng)成一個View.例如,tvUserName=<EditText>super.findViewById<R.id.userName>表示我們從R文件中找到userName代表的控件最后返給tvUserName,下一步我們可以通過tvUserName.getText<>方法進一步獲取到它的值.

另一個關(guān)鍵是就是給"登錄"按鈕添加單擊監(jiān)聽事件:btnLogin.setOnClickListener<newLoginOnClickListener<>>.4、第④部分

我們新建一個類LoginOnClickListener繼承接口OnClickListener用以實現(xiàn)單擊事件監(jiān)聽.

Toast.makeText<getApplicationContext<>,info,Toast.LENGTH_SHORT>.show<>用以提示輸入的用戶名和密碼.

效果如下:單選按鈕RadioGroup與復(fù)選框CheckBox在AndroidApp應(yīng)用中,單選按鈕和復(fù)選框也是經(jīng)常使用的,下面我們一起學(xué)習(xí)一下.我們需要學(xué)習(xí)Android中的基本控件:<1>單選按鈕RadioGroup、<2>復(fù)選框CheckBox.一、設(shè)計登錄窗口打開"res/layout/activity_main.xml"文件.1、分別從工具欄向activity拖出1個單選按鈕列表RadioGroup〔注意自動包含3個單選按鈕RadioButton、2個復(fù)選框CheckBox、1個按鈕Button.這3個控件均來自FormWidgets.2、打開activity_main.xml文件.我們把自動生成的代碼修改成如下代碼,具體為:〔1RatioGroup的id修改為gender,兩個RadioButton的id分別修改為male和female,其文本分別修改為男和女;注意:第1個單選按鈕android:checked="true"表示此單選按鈕默認為選擇.〔2兩個CheckBox的id修改為football和basketball,其文本分別修改為足球和藍球;〔3Buttion的id修改為save,其文本修改為"保存".3、界面如下:這個界面常用于注冊,我們可以在控件前加"性別"、"愛好"提示,也可以把整個布局排得更美觀一些,但不是現(xiàn)在,在以后我們學(xué)過布局章節(jié)再說,我們現(xiàn)在把最重要的精力放在控件的使用上.相信不久的將來,你會把頁面做得更漂亮!二、單擊事件打開"src/com.genwoxue.RadioGroupCheckBox/MainActivity.java"文件.然后輸入以下代碼:在以上代碼中,我們著重分析一下帶有淺藍色背景部分,其它是最簡單的基礎(chǔ)代碼,如果不明白,請參考上一章內(nèi)容.1、第①部分導(dǎo)入與RadioButton、CheckBox相關(guān)的2個包.2、第②部分聲明5個控件變量.3、第③部分與上一章類同.〔1findViewById<>方法完成5個控件的捕獲.〔2"保存"按鈕添加單擊監(jiān)聽事件:btnSave.setOnClickListener<newSaveOnClickListener<>>.4、第④部分我們新建一個類SaveOnClickListener繼承接口OnClickListener用以實現(xiàn)單擊事件監(jiān)聽.Toast.makeText<getApplicationContext<>,sInfo,Toast.LENGTH_SHORT>.show<>用以顯示提示信息:性別與愛好.注意:isChecked<>方法用來判斷RadioButton和CheckBox控件是否被選中,如果選中返回true,否則返回flase.效果如下:下拉列表框Spinner在AndroidApp應(yīng)用中,下拉列表框Spinner的使用頻次是相當(dāng)高的,如果你對Spinner陌生,你一定不會對HTML中的SELECT陌生,他們的作用是一樣的,都是多選一.我們需要學(xué)習(xí)Android中的基本控件下拉列表框Spinner.一、設(shè)計登錄窗口打開"res/layout/activity_main.xml"文件.1、分別從工具欄向activity拖出1個下拉列表框Spinner、1個按鈕Button.這2個控件均來自FormWidgets.2、新建province.xml件.在"res/values"位置新建province.xml文件.〔1province.xml文件位置如下圖所示:〔2province.xml內(nèi)容如下:3、打開activity_main.xml文件.我們把自動生成的代碼修改成如下代碼,具體為:〔1Spinner的id修改為province;注意:android:entries="@array/provarray",表示Spinner的Items使用的是province.xml中provarray的值.〔2Buttion的id修改為save,其文本修改為"保存".4、界面如下:二、單擊事件打開"src/com.genwoxue.spinnerapp/MainActivity.java"文件.然后輸入以下代碼:在以上代碼中,我們著重分析一下帶有淺藍色背景部分.1、第①部分導(dǎo)入與Spinner相關(guān)的包.2、第②部分聲明2個控件變量.3、第③部分〔1findViewById<>方法完成2個控件的捕獲.〔2"保存"按鈕添加單擊監(jiān)聽事件:btnSave.setOnClickListener<newSaveOnClickListener<>>.4、第④部分〔1我們新建一個類SaveOnClickListener繼承接口OnClickListener用以實現(xiàn)單擊事件監(jiān)聽.〔2Spinner.getSelectedItem<>獲取當(dāng)前選擇項的值.〔3Toast.makeText<getApplicationContext<>,sInfo,Toast.LENGTH_SHORT>.show<>用以顯示選擇項的提示信息:例如XX省.效果如下:圖像按鈕ImageButton在AndroidApp應(yīng)用中,默認的Button按鈕盡管我們可以通過樣式變成圓角,但有時感覺仍然不夠美觀,我們可以通過采用圖像按鈕ImageButton改善這種現(xiàn)狀,今天我們就一起學(xué)習(xí)一下圖像按鈕的使用.知識點:圖像按鈕ImageButton一、設(shè)計界面1、首先把button.png圖片復(fù)制到res/drawable-hdpi文件夾內(nèi).2、打開"res/layout/activity_main.xml"文件,生成ImageButton按鈕.〔1從工具欄向activity拖出1個圖像按鈕ImageButton.該控件來自Image&Media.〔2彈出資源選擇器ResourceChooser窗口.選擇download,然后單擊OK按鈕.〔3生成的"Download"圖片按鈕如下:注意:按鈕外邊有一圈灰色的邊框,我們可以通過android:padding="0dp"去掉邊框.3、打開activity_main.xml文件.我們把自動生成的代碼修改成如下代碼,具體為:〔1ImageButton的id修改為download;〔2設(shè)置android:padding="0dp",按鈕灰色邊框去掉.4、界面如下:二、單擊事件打開"src/com.genwoxue.ImageButton/MainActivity.java"文件.然后輸入以下代碼:在以上代碼中,我們著重分析一下帶有淺藍色背景部分.1、第①部分導(dǎo)入與ImageButton相關(guān)的包.2、第②部分聲明ImageButton控件變量.3、第③部分〔1findViewById<>方法完成ImageButton控件的捕獲.〔2"Download"按鈕添加單擊監(jiān)聽事件:ibtnDownload.setOnClickListener<newDownloadOnClickListener<>>.4、第④部分〔1我們新建一個類DownloadOnClickListener繼承接口OnClickListener用以實現(xiàn)單擊事件監(jiān)聽.〔2Toast.makeText<getApplicationContext<>,"圖像按鈕應(yīng)用",Toast.LENGTH_SHORT>.show<>表示單擊圖像按鈕的提示信息.效果如下:圖像ImageView在AndroidApp應(yīng)用中,圖像是必不可少的.我們可以通過圖像ImageView來展示.知識點:圖像ImageView一、設(shè)計界面1、首先把a.jpg、b.jpg、c.jpg、d.jpg、e.jpg、prov.png、next.png圖片復(fù)制到res/drawable-hdpi文件夾內(nèi).2、打開"res/layout/activity_main.xml"文件,生成ImageButton按鈕.〔1從工具欄向activity拖出1個圖像ImageView、2個圖像按鈕ImageButton.該控件來自Image&Media.3、打開activity_main.xml文件.我們把自動生成的代碼修改成如下代碼,具體為:

〔1ImageView的id修改為picture;〔2"上一幅"按鈕ImageButton的id修改為prov;〔3設(shè)置android:padding="0dp",按鈕灰色邊框去掉.〔4"下一幅"按鈕ImageButton的id修改為next;〔5設(shè)置android:padding="0dp",按鈕灰色邊框去掉.4、界面如下:二、單擊事件打開"src/com.genwoxue.ImageView/MainActivity.java"文件.然后輸入以下代碼:在以上代碼中,我們著重分析一下帶有淺藍色背景部分.1、第①部分導(dǎo)入與ImageView、ImageButton相關(guān)的包.2、第②部分聲明ImageView、ImageButton控件變量.3、第③部分聲明整型數(shù)組iImages用于存儲圖片資源.4、第④部分〔1findViewById<>方法完成ImageView、ImageButton控件的捕獲.〔2"上一幅"、"下一幅"按鈕添加單擊監(jiān)聽事件:ibtnProv.setOnClickListener<newProvOnClickListener<>>、ibtnNext.setOnClickListener<newNextOnClickListener<>>.5、第⑤部分〔1我們新建一個類ProvOnClickListener繼承接口OnClickListener用以實現(xiàn)單擊事件監(jiān)聽.〔2單擊按鈕能夠顯示上一幅圖片,如果到頭了,則重置到最后一幅.6、第⑥部分〔1我們新建一個類NextOnClickListener繼承接口OnClickListener用以實現(xiàn)單擊事件監(jiān)聽.〔2單擊按鈕能夠顯示下一幅圖片,如果到頭了,則重置到第一幅.效果如下:日期DatePicker與時間TimePicker控件在AndroidApp應(yīng)用中,設(shè)置日期和時間時間也是經(jīng)常遇見的,下面我們一起學(xué)習(xí)一下.我們需要學(xué)習(xí)Android中的基本控件:<1>日期選擇控件DatePicker<2>時間選擇控件TimePicker.一、設(shè)計登錄窗口打開"res/layout/activity_main.xml"文件.1、分別從工具欄向activity拖出1個日期選擇控件DatePicker、1個時間選擇控件TimePicker、1個按鈕Button.控件來自Time&Date、FormWidgets.2、打開activity_main.xml文件.我們把自動生成的代碼修改成如下代碼,具體為:〔1DatePicker的id修改為tody.〔2TimePicker的id修改為now;〔3Button的id修改為save,其文本修改為"保存".3、界面如下:二、單擊事件y.java"文件.然后輸入以下代碼:我們著重分析一下帶有淺藍色背景部分.1、第①部分導(dǎo)入與DatePicker與TimePicker相關(guān)的2個包.2、第②部分聲明3個控件變量.3、第③部分〔1findViewById<>方法完成3個控件的捕獲.〔2"保存"按鈕添加單擊監(jiān)聽事件:btnSave.setOnClickListener<newSaveOnClickListener<>>.4、第④部分getYear<>、getMonth<>、getDayOfMonth<>方法獲取年、月、日.5、第⑤部分getCurrentHour<>、getCurrentMinute<>方法獲取時、分.6、第⑥部分使用Toast顯示日期DatePicker、時間TimePicker控件選擇的日期與時間.效果如下:三、附代碼1、activity_main.xml源碼TextCopytoclipboardPrint<RelativeLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><DatePickerandroid:id="@+id/today"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"/><TimePickerandroid:id="@+id/now"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/today"/><Buttonandroid:id="@+id/save"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@+id/now"android:text="保存"/></RelativeLayout>2、MainActivity.java源碼TextCopytoclipboardPrintpackage

com.genwoxue.datepickertimepicker;

import

android.os.Bundle;

import

android.app.Activity;

import

android.view.View;

import

android.widget.DatePicker;

import

android.widget.TimePicker;

importton;

import

android.widget.Toast;

import

android.view.View.OnClickListener;

publicclass

MainActivity

extends

Activity

{

private

DatePicker

dpToday=null;

private

TimePicker

tpNow=null;

private

Button

btnSave=null;

@Overrideprotectedvoid

onCreate<Bundle

savedInstanceState>

{

super.onCreate<savedInstanceState>;

setContentView<R.layout.activity_main>;

dpToday=<DatePicker>super.findViewById<R.id.today>;

tpNow=<TimePicker>super.findViewById<R.id.now>;

btnSave=<Button>super.findViewById<R.id.save>;

btnSave.setOnClickListener<new

SaveOnClickListener<>>;

}

privateclass

SaveOnClickListener

implements

OnClickListener{

publicvoid

onClick<View

view>{

int

iYear=0;

int

iMonth=0;

int

iDay=0;

String

sDate="";

iYear=dpToday.getYear<>;

iMonth=dpToday.getMonth<>+1;

iDay=dpToday.getDayOfMonth<>;

sDate="日期:"+String.valueOf<iYear>+"年"+String.valueOf<iMonth>+"月"+String.valueOf<iDay>+"日";

int

iHour=0;

int

iMin=0;

String

sTime="";

iHour=tpNow.getCurrentHour<>;

iMin=tpNow.getCurrentMinute<>;

sTime="時間:"+String.valueOf<iHour>+"時"+String.valueOf<iMin>+"分";

Toast.makeText<getApplicationContext<>,

sDate+sTime,Toast.LENGTH_LONG>.show<>;

}

}

}

第三篇:Android常見布局第1章、布局Layouts之LinearLayout線性布局從Helloworld!開始,我們一直都是在一種布局下學(xué)習(xí)的,當(dāng)然,對于基礎(chǔ)內(nèi)容的學(xué)習(xí),還是沒有任何問題的!但——在Android開發(fā)中UI設(shè)計也是十分重要的,當(dāng)用戶使用一個App時,最先感受到的不是這款軟件的功能是否強大,而是界面設(shè)計是否賞心悅目,用戶體驗是否良好.也可以這樣說,有一個好的界面設(shè)計去吸引用戶的使用,才能讓更多的用戶體驗到軟件功能的強大.那么,Android中幾種常用布局則顯得至關(guān)重要.各個布局既可以單獨使用,也可以嵌套使用,我們應(yīng)該在實際應(yīng)用中應(yīng)靈活變通.第2章、LinearLayout線性布局LinearLayout是一種線型的布局方式.LinearLayout布局容器內(nèi)的組件一個挨著一個地排列起來:不僅可以控制個組件橫向排列,也可控制各組件縱向排列.通過orientation屬性設(shè)置線性排列的方向是垂直<vertical>還是縱向<horizontal>.我們下面通過XML布局和Java代碼布局兩種方式分別舉例:一、XML方式布局1、創(chuàng)建一個空白Activity2、打開"res/layout/activity_main.xml"文件,修改成以下代碼.〔1第①部分<?xmlversion="1.0"encoding="utf-8">,每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言,<?xmlversion="1.0">.這行代碼表示按照1.0版本的XML規(guī)則進行解析.encoding="utf-8"表示此xml文件采用utf-8的編碼格式.編碼格式也可以是GB2312.如果你對此不太明白,請參閱相關(guān)XML文檔.〔2第②部分<LinearLayout……表示采用線型布局管理器.〔3第③部分android:layout_width="match_parent"

android:layout_height="match_parent"表示布局管理器寬度和高充將填充整個屏幕寬度和高度.〔4第④部分android:orientation="vertical"表示布局管理器內(nèi)組件采用垂直方向排列.如果要采用水平方向請使用:horizontal.3、插入三個按鈕.4、打開"res/layout/activity_main.xml"文件,修改成以下代碼.將3個按鈕的android:layout_width的屬性設(shè)為:"match_parent".該屬性可以有三個值:wrap_content、match_parent、fill_parent.wrap_content表示寬度匹配內(nèi)容,簡單地說就是文字有多長按鈕就多長.match_parent表示寬度匹配父內(nèi)容,按鈕外的容器有多寬就顯示多寬.fill_parent與match_parent相同,android2.2以后就不推薦使用了.最終顯示效果如下:二、Java代碼方式布局上面我們已經(jīng)了解采用XML進行LinearLayout布局,我們現(xiàn)在再來學(xué)習(xí)一下如何使用Java代碼完成與之同樣功能.1、打開"src/com.genwoxue.LinearLayout/MainActivity.java"文件.然后輸入以下代碼:在以上代碼中,我們著重分析一下帶有淺藍色背景部分.〔1第①部分導(dǎo)入與LinearLayout、LayoutParams、Button相關(guān)的包.〔2第②部分創(chuàng)建線性布局管理器,并且設(shè)置布局管理寬度和高度與方向.LinearLayoutllLayout=newLinearLayout<this>:創(chuàng)建線性布局管理器;LayoutParamslpPara=newLayoutParams<LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT>:創(chuàng)建布局參數(shù),構(gòu)造函數(shù)設(shè)置寬度與高度.用于設(shè)置線性布局管理器寬度與高度.llLayout.setOrientation<LinearLayout.VERTICAL>:設(shè)置布局管理器為垂直方向.〔3第③部分LayoutParamsbtnPara=newLayoutParams<LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT>:創(chuàng)建布局參數(shù),構(gòu)造函數(shù)設(shè)置寬度與高度.用于設(shè)置三個按鈕寬度與高度.〔4第④部分創(chuàng)建3個按鈕:btnFourth、btnFifth、btnSixth,設(shè)置其文本與布局參數(shù).〔5第⑤部分為線性布局管理器添加3個按鈕.〔6第⑥部分super.addContentView<llLayout,lpPara>:為當(dāng)前activity添加布局管理器以及布局管理器的參數(shù)對象.2、顯示效果第3章、布局Layouts之RelativeLayout相對布局RelativeLayout相對布局RelativeLayout是一種相對布局,控件的位置是按照相對位置來計算的,后一個控件在什么位置依賴于前一個控件的基本位置,是布局最常用,也是最靈活的一種布局.我們下面通過XML布局和Java代碼布局兩種方式分別舉例:一、XML方式布局1、創(chuàng)建一個空白Activity2、打開"res/layout/activity_main.xml"文件,修改成以下代碼.〔1第①部分<?xmlversion="1.0"encoding="utf-8">,每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言,<?xmlversion="1.0">.這行代碼表示按照1.0版本的XML規(guī)則進行解析.encoding="utf-8"表示此xml文件采用utf-8的編碼格式.編碼格式也可以是GB2312.如果你對此不太明白,請參閱相關(guān)XML文檔.〔2第②部分<RelativeLayout……表示采用相對布局管理器.〔3第③部分android:layout_width="match_parent"android:layout_height="match_parent"表示布局管理器寬度和高充將填充整個屏幕寬度和高度.3、插入三個按鈕.插入三個按鈕,并分別設(shè)置其文本為:"第一個按鈕"、"第二個按鈕"、"第三個按鈕".我們下一步設(shè)置第一個按鈕距離左邊、上邊各20dp,第二個按鈕距離第一個按鈕左邊、上邊各10dp;第三個按鈕距離第二個按鈕上邊10dp,與第二個按鈕左邊對齊.4、打開"res/layout/activity_main.xml"文件,修改成以下代碼.〔1第①部分設(shè)置第一個按鈕,以父元素為基準,貼緊左上,距離20dp.TextCopytoclipboardPrint

<Button

android:id="@+id/button1"

android:layout_width="wrap_content"http://寬度匹配內(nèi)容

android:layout_height="wrap_content"http://高度匹配內(nèi)容

android:layout_alignParentLeft="true"http://貼緊父元素左邊

android:layout_alignParentTop="true"http://貼緊父元素上邊

android:layout_marginLeft="20dp"http://設(shè)置左間距20dp

android:layout_marginTop="20dp"http://設(shè)置上間距20dp

android:text="第一個按鈕"

/>

〔2第②部分設(shè)置第二個按鈕,以第一個按鈕為基準,在第一個按鈕下面,對齊第一個按鈕的右邊,上距離15dp.TextCopytoclipboardPrint<Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"http://寬度匹配內(nèi)容

android:layout_height="wrap_content"

//高度匹配內(nèi)容

android:layout_below="@+id/button1"http://位置在第一個按鈕的下面

android:layout_toRightOf="@+id/button1"

//與第一個按鈕的右邊對齊

android:layout_marginTop="15dp"

//設(shè)置上間距15dp

android:text="第二個按鈕"/>〔3第③部分設(shè)置第三個按鈕,以第二個按鈕為基準,在第二個按鈕下面,對齊第二個按鈕的左邊,距離15dp.TextCopytoclipboardPrint<Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"http://寬度匹配內(nèi)容

android:layout_height="wrap_content"

//高度匹配內(nèi)容

android:layout_below="@+id/button2"http://位置在第二個按鈕的下面

android:layout_toLeftOf="@+id/button2"http://與第二個按鈕的左邊對齊

android:layout_marginTop="15dp"http://設(shè)置上間距15dp

android:text="第三個按鈕"/>

最終顯示效果如下:附:相對布局常用屬性介紹這里將這些屬性分成組,便于理解和記憶.

a、第一類:屬性值為true或false

android:layout_centerHrizontal水平居中

android:layout_centerVertical垂直居中

android:layout_centerInparent相對于父元素完全居中

android:layout_alignParentBottom貼緊父元素的下邊緣

android:layout_alignParentLeft貼緊父元素的左邊緣

android:layout_alignParentRight貼緊父元素的右邊緣

android:layout_alignParentTop貼緊父元素的上邊緣b、第二類:屬性值必須為id的引用名"@id/id-name"

android:layout_below在某元素的下方

android:layout_above在某元素的的上方

android:layout_toLeftOf在某元素的左邊

android:layout_toRightOf在某元素的右邊

android:layout_alignTop本元素的上邊緣和某元素的的上邊緣對齊

android:layout_alignLeft本元素的左邊緣和某元素的的左邊緣對齊

android:layout_alignBottom本元素的下邊緣和某元素的的下邊緣對齊

android:layout_alignRight本元素的右邊緣和某元素的的右邊緣對齊

c、第三類:屬性值為具體的像素值,如30dip,40px

android:layout_marginBottom離某元素底邊緣的距離

android:layout_marginLeft離某元素左邊緣的距離

android:layout_marginRight離某元素右邊緣的距離

android:layout_marginTop離某元素上邊緣的距離可以通過組合這些屬性來實現(xiàn)各種各樣的布局.第4章、布局Layouts之FrameLayout框架布局FrameLayout單楨布局FrameLayout對象好比一塊在屏幕上提前預(yù)定好的空白區(qū)域,可以將一些元素填充在里面,如圖片.所有元素都被放置在FrameLayout區(qū)域的最左上區(qū)域,而且無法為這些元素制指定一個確切的位置,若有多個元素,那么后面的元素會重疊顯示在前一個元素上.我們下面通過XML布局和Java代碼布局兩種方式分別舉例:一、XML方式布局1、首先把a.jpg圖片復(fù)制到res/drawable-hdpi文件夾內(nèi).2、創(chuàng)建一個空白Activity3、打開"res/layout/activity_main.xml"文件,修改成以下代碼.〔1第①部分<?xmlversion="1.0"encoding="utf-8">,每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言,<?xmlversion="1.0">.這行代碼表示按照1.0版本的XML規(guī)則進行解析.encoding="utf-8"表示此xml文件采用utf-8的編碼格式.編碼格式也可以是GB2312.〔2第②部分<LinearLayout……表示采用單幀布局管理器.〔3第③部分android:layout_width="match_parent"android:layout_height="match_parent"表示布局管理器寬度和高充將填充整個屏幕寬度和高度.4、從工具欄向activity拖出1個圖像ImageView、1個按鈕Button.5、打開"res/layout/activity_main.xml"文件.〔1第①部分ID為imageView1的圖像ImageView顯示一幅圖片.〔2第②部分ID為button1的按鈕Button顯示一個按鈕.由于是單幀F(xiàn)rameLayout布局,這兩個控件不能夠進行任何布局,只能以左上角為基準,重疊擺放.6、最終顯示效果如下:如果FrameLayout單幀布局僅此而已,則可以說毫無價值!最重要的是多種布局方式進行嵌套也許才更有意義,這個在稍后的章節(jié)我們再說,如果你對FrameLayout感覺迷茫,可以先看一篇:二、Java代碼方式布局上面我們已經(jīng)了解采用XML進行LinearLayout布局,我們現(xiàn)在再來學(xué)習(xí)一下如何使用Java代碼完成與之同樣功能.暫略.第5章、布局Layouts之TableLayout表格布局TableLayout表格布局TableLayout是指將子元素的位置分配到行或列中.Android的一個TableLayout有許多TableRow組成,每一個TableRow都會定義一個Row.TableLayout容器不會顯示Row,Column,及Cell的邊框線,每個Row擁有0個或多個Cell,每個Cell擁有一個View對象.在使用tablelayout時,應(yīng)注意每一個cell的寬度.我們下面通過XML布局和Java代碼布局兩種方式分別舉例:一、XML方式布局1、創(chuàng)建一個空白Activity2、打開"res/layout/activity_main.xml"文件,修改成以下代碼.〔1第①部分<?xmlversion="1.0"encoding="utf-8"?>,每個XML文檔都由XML序言開始,在前面的代碼中的第一行便是XML序言,<?xmlversion="1.0">.這行代碼表示按照1.0版本的XML規(guī)則進行解析.encoding="utf-8"表示此xml文件采用utf-8的編碼格式.編碼格式也可以是GB2312.〔2第②部分<LinearLayout……表示采用表格布局管理器.〔3第③部分android:layout_width="match_parent"android:layout_height="match_parent"表示布局管理器寬度和高充將填充整個屏幕寬度和高度.〔4第④部分android:stretchColumns="1"表示表格布局管理器中第2列內(nèi)組件可以擴充到的有可用空間.3、插入1行TableRow、1個文本TextView、1個TextEdit.4、打開"res/layout/activity_main.xml"文件,修改成以下代碼.〔1第①部分<TableRow></TableRow>代表一行,可以在其中填充控件.〔2第②部分添加一個標簽<TextView>.〔3第③部分添加一個編輯框<EditText>.5、依次再插入2行<TableRow>、密碼標簽<TextView>、密碼編輯框<EditText>、2個按鈕Button:注冊、登錄.代碼如下:TextCopytoclipboardPrint<?xmlversion="1.0"encoding="utf-8"?><TableLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:stretchColumns="1">//第一行

<TableRowandroid:id="@+id/tableRow1"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/tvUserName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="用戶名:"/><EditTextandroid:id="@+id/etUserName"android:layout_width="wrap_content"android:layout_height="wrap_content"android:ems="10"><requestFocus/></EditText></TableRow>

//第二行

<TableRowandroid:id="@+id/tableRow2"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:text="登錄密碼:"android:textStyle="bold"android:gravity="right"android:padding="3dp"/><EditTextandroid:id="@+id/password"android:password="true"android:padding="3dp"android:scrollHorizontally="true"/></TableRow>//第三行

<TableRowandroid:id="@+id/tableRow3"android:layout_width="wrap_content"android:layout_height="wrap_content"><Buttonandroid:id="@+id/cancel"android:text="注冊"/><Buttonandroid:id="@+id/login"android:text="登錄"/></TableRow></TableLayout>

6、最終顯示效果如下:附:表格布局常見屬性介紹〔1TableLayout行列數(shù)的確定

TableLayout的行數(shù)由開發(fā)人員直接指定,即有多少個TableRow對象〔或View控件,就有多少行.

TableLayout的列數(shù)等于含有最多子控件的TableRow的列數(shù).如第一TableRow含2個子控件,第二個TableRow含3個,第三個TableRow含4個,那么該TableLayout的列數(shù)為4.〔2TableLayout可設(shè)置的屬性詳解

TableLayout可設(shè)置的屬性包括全局屬性及單元格屬性.a全局屬性也即列屬性,有以下3個參數(shù):android:stretchColumns

設(shè)置可伸展的列.該列可以向行方向伸展,最多可占據(jù)一整行.android:shrinkColumns

設(shè)置可收縮的列.當(dāng)該列子控件的內(nèi)容太多,已經(jīng)擠滿所在行,那么該子控件的內(nèi)容將往列方向顯示.android:collapseColumns設(shè)置要隱藏的列.示例:android:stretchColumns="0"

第0列可伸展android:shrinkColumns="1,2"

第1,2列皆可收縮android:collapseColumns="*"

隱藏所有行說明:列可以同時具備stretchColumns及shrinkColumns屬性,若此,那么當(dāng)該列的內(nèi)容N多時,將"多行"顯示其內(nèi)容.〔這里不是真正的多行,而是系統(tǒng)根據(jù)需要自動調(diào)節(jié)該行的layout_heightb單元格屬性,有以下2個參數(shù):android:layout_column

指定該單元格在第幾列顯示android:layout_span

指定該單元格占據(jù)的列數(shù)〔未指定時,為1示例:android:layout_column="1"

該控件顯示在第1列android:layout_span="2"

該控件占據(jù)2列說明:一個控件也可以同時具備這兩個特性.二、Java代碼方式布局上面我們已經(jīng)了解采用XML進行LinearLayout布局,我們現(xiàn)在再來學(xué)習(xí)一下如何使用Java代碼完成與之同樣功能.Java代碼方式暫略.第6篇、布局Layouts之GridLayout網(wǎng)格布局第5章、布局Layouts之GridLayout網(wǎng)格布局

GridLayout網(wǎng)格布局android4.0以上版本出現(xiàn)的GridLayout布局解決了以上問題.Gr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論