Android 的一個(gè)簡(jiǎn)單界面介紹

只適合和我一樣的初學(xué)者學(xué)習(xí)郊供。

  • 在iOS 端這個(gè)界面實(shí)現(xiàn)是超簡(jiǎn)單峡碉,也許是剛接觸Android吧近哟!第一次弄懂流程驮审,感覺步驟有點(diǎn)多,現(xiàn)在終結(jié)一下覺得也很簡(jiǎn)單了吉执。
  • Android的圖形用戶界面是由多個(gè)View 和 ViewLayout 組成的疯淫。
  • View 的話例如:Button 、text field 等是可視的戳玫。
  • ViewGroup 是不可見的熙掺。它是一個(gè)布局。
  • 所以我們以后布局的時(shí)候:
    Android提供了一個(gè)對(duì)應(yīng)于 View 和 ViewGroup 子類的一系列XMl標(biāo)簽咕宿,我們可以在XML里使用層級(jí)視圖元素創(chuàng)建自己的UI币绩。
屏幕快照 2016-06-21 23.24.10.png

接下來的練習(xí)將使用 LinearLayout 布局

  • 在Android Studio中,當(dāng)打開布局文件時(shí)府阀,可以看到一個(gè)Preview面板缆镣,點(diǎn)擊這個(gè)面板中的標(biāo)簽:
    res/layout/activity_main.xml
  • 輸入 線性布局:
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:tools="http://schemas.android.com/tools" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:orientation="horizontal" >
  </LinearLayout>
  • 添加一個(gè)文本輸入框

     <EditText android:id="@+id/edit_message"    
     android:layout_width="wrap_content"    
     android:layout_height="wrap_content"    
     android:hint="你好!我是編輯框J哉恪6啊!"
     android:background="#268be9" />
    
  • 下面是運(yùn)行的效果圖:

Snip20160621_1.png
  • 與其它View一樣田巴,我們需要設(shè)置XML里的某些屬性來指定EditText的屬性值钠糊,以下是應(yīng)該在線性布局里指定的一些屬性元素:

android:id

  • 這是定義View的唯一標(biāo)識(shí)符∫疾福可以在程序代碼中通過該標(biāo)識(shí)符對(duì)對(duì)象進(jìn)行引用抄伍。
  • 當(dāng)想從XML里引用資源對(duì)象的時(shí)候必須使用@符號(hào)。緊隨@之后的是資源的類型(這里是id
    )管宵,然后是資源的名字(這里使用的是edit_message
    )逝慧。
  • +號(hào)只是當(dāng)你第一次定義一個(gè)資源ID的時(shí)候需要昔脯。這里是告訴SDK此資源ID需要被創(chuàng)建出來。在應(yīng)用程序被編譯之后笛臣,SDK就可以直接使用ID值云稚,edit_message是在項(xiàng)目gen/R.java
    文件中創(chuàng)建一個(gè)新的標(biāo)識(shí)符,這個(gè)標(biāo)識(shí)符就和EditText關(guān)聯(lián)起來了沈堡。一旦資源ID被創(chuàng)建了静陈,其他資源如果引用這個(gè)ID就不再需要+號(hào)了。這里是唯一一個(gè)需要+號(hào)的屬性诞丽。

android:layout_width 和 android:layout_height

  • 對(duì)于寬和高不建議指定具體的大小鲸拥,使用wrap_content
    指定之后,這個(gè)視圖將只占據(jù)內(nèi)容大小的空間僧免。如果你使用了match_parent
    刑赶,這時(shí)EditText將會(huì)布滿整個(gè)屏幕,因?yàn)樗鼘⑦m應(yīng)父布局的大小懂衩。

android:hint

  • 當(dāng)文本框?yàn)榭盏臅r(shí)候,會(huì)默認(rèn)顯示這個(gè)字符串撞叨。對(duì)于字符串 "你好!我是編輯框W嵌础G7蟆!"
    的值所引用的資源應(yīng)該是定義在單獨(dú)的文件里法希,而不是直接使用字符串枷餐。因?yàn)槭褂玫闹凳谴嬖诘馁Y源,所以不需要使用+號(hào)苫亦。然而毛肋,由于你還沒有定義字符串的值,所以在添加@string/edit_message
    時(shí)候會(huì)出現(xiàn)編譯錯(cuò)誤屋剑。下邊你可以定義字符串資源值來去除這個(gè)錯(cuò)誤润匙。

Note: 該字符串資源,也就是我 "你好!我是編輯框1稹3锰摇!" 與 id 如果使用了相同的名稱(edit_message)肄鸽。然而卫病,對(duì)于資源的引用是區(qū)分類型的(比如id和字符串),因此典徘,使用相同的名稱不會(huì)引起沖突的蟀苛。

增加字符串資源

  • 這個(gè)和 iOS 有點(diǎn)區(qū)別,它是分開來寫的逮诲。Android 這樣做有它的好處的帜平。
  • 當(dāng)你在用戶界面定義一個(gè)文本的時(shí)候幽告,你應(yīng)該把每一個(gè)文本字符串列入資源文件。
  • 這樣做的好處是:對(duì)于所有字符串值裆甩,字符串資源能夠單獨(dú)的修改冗锁,在資源文件里你可以很容易的找到并且做出相應(yīng)的修改。通過選擇定義每個(gè)字符串嗤栓,還允許您對(duì)不同語言本地化應(yīng)用程序冻河。
Snip20160621_2.png

添加一個(gè)按鈕

  • 1 在 Android Studio里, 編輯 res/layout下的 activity_main.xml 文件.
  • 2、 在< EditText >標(biāo)簽之后定義一個(gè)< Button >標(biāo)簽茉帅。
  • 3叨叙、設(shè)置Button的width 和 height 屬性值為 "wrap_content" 以便讓Button大小能完整顯示其上的文本.
  • 4 定義button的文本使用android:text 屬性,設(shè)置其值為之前定義好的 button_send 字符串.
  • 下面的是文本框和按鈕代碼:
<EditText android:id="@+id/edit_message"   
 android:layout_width="wrap_content"        
 android:layout_height="wrap_content"    
 android:hint="string你好堪澎!我是編輯框@薮怼!樱蛤!"    
android:background="#268be9" />
<Button    
android:layout_width="wrap_content"    
android:layout_height="wrap_content"    
android:text="@string/button_send"/>

Note 寬和高被設(shè)置為"wrap_content"
钮呀,這時(shí)按鈕占據(jù)的大小就是按鈕里文本的大小。這個(gè)按鈕不需要指定[android:id]屬性刹悴,因?yàn)锳ctivity代碼中不會(huì)引用該Button行楞。

當(dāng)前EditText和Button部件只是適應(yīng)了他們各自內(nèi)容的大小攒暇,如下圖所示:

屏幕快照 2016-06-21 23.32.45.png
  • 這樣設(shè)置對(duì)按鈕來說很合適土匀,但是對(duì)于文本框來說就不太好了,因?yàn)橛脩艨赡茌斎敫L(zhǎng)的文本內(nèi)容形用。因此如果能夠占滿整個(gè)屏幕寬度會(huì)更好就轧。LinearLayout使用權(quán)重屬性來達(dá)到這個(gè)目的,你可以使用android:layout_weight屬性來設(shè)置田度。

  • "權(quán)重" 的值指的是:每個(gè)部件所占剩余空間的大小妒御,該值與同級(jí)部件所占空間大小有關(guān)。(是一個(gè)shu'an'fa)

  • 就類似于飲料的成分配方:“兩份伏特加酒镇饺,一份咖啡利口酒”乎莉,即該酒中伏特加酒占三分之二。例如奸笤,我們?cè)O(shè)置一個(gè)View的權(quán)重是2惋啃,另一個(gè)View的權(quán)重是1,那么總數(shù)就是3监右,這時(shí)第一個(gè)View占據(jù)2/3的空間边灭,第二個(gè)占據(jù)1/3的空間。如果你再加入第三個(gè)View健盒,權(quán)重設(shè)為1绒瘦,那么第一個(gè)View(權(quán)重為2的)會(huì)占據(jù)1/2的空間称簿,剩余的另外兩個(gè)View各占1/4。(請(qǐng)注意惰帽,使用權(quán)重的前提一般是給View的寬或者高的大小設(shè)置為0dp憨降,然后系統(tǒng)根據(jù)上面的權(quán)重規(guī)則來計(jì)算View應(yīng)該占據(jù)的空間。但是很多情況下该酗,如果給View設(shè)置了match_parent的屬性券册,那么上面計(jì)算權(quán)重時(shí)則不是通常的正比,而是反比垂涯,也就是權(quán)重值大的反而占據(jù)空間小)烁焙。

  • 對(duì)于所有的View默認(rèn)的權(quán)重是0,如果只設(shè)置了一個(gè)View的權(quán)重大于0耕赘,則該View將占據(jù)除去別的View本身占據(jù)的空間的所有剩余空間骄蝇。因此這里設(shè)置EditText的權(quán)重為1,使其能夠占據(jù)除了按鈕之外的所有空間操骡。

讓輸入框充滿整個(gè)屏幕的寬度

  • 1 在activity_Main.xml文件里九火,設(shè)置EditText的layout_weight屬性值為1 .

2 設(shè)置EditText的layout_width值為0dp.

  • 就是把 wrap_content 改了。

    <EditText android:layout_weight="1" 
    android:layout_width="0dp" ... />
    

為了提升布局的效率册招,在設(shè)置權(quán)重的時(shí)候岔激,應(yīng)該把EditText寬度設(shè)為0dp。如果設(shè)置"wrap_content"作為寬度是掰,系統(tǒng)需要自己去計(jì)算這個(gè)部件所占有的寬度虑鼎,而此時(shí)的因?yàn)樵O(shè)置了權(quán)重,所以系統(tǒng)自動(dòng)會(huì)占據(jù)剩余空間键痛,EditText的寬度最終成了不起作用的屬性炫彩。

  • 設(shè)置權(quán)重后的效果圖:
屏幕快照 2016-06-21 23.40.06.png
  • 在Android Studio里,點(diǎn)擊工具欄里的Run按鈕
  • 或者 使用命令行:
  • 1絮短、cd 到你的根目錄
  • 2江兢、
    ant debug
    adb install bin/工程名字-debug.apk
  • 運(yùn)行效果:
屏幕快照 2016-06-21 23.44.34.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市丁频,隨后出現(xiàn)的幾起案子杉允,更是在濱河造成了極大的恐慌,老刑警劉巖席里,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叔磷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡胁勺,警方通過查閱死者的電腦和手機(jī)世澜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來署穗,“玉大人寥裂,你說我怎么就攤上這事嵌洼。” “怎么了封恰?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵麻养,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我诺舔,道長(zhǎng)鳖昌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任低飒,我火速辦了婚禮许昨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘褥赊。我一直安慰自己糕档,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布拌喉。 她就那樣靜靜地躺著速那,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尿背。 梳的紋絲不亂的頭發(fā)上端仰,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音田藐,去河邊找鬼荔烧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛坞淮,可吹牛的內(nèi)容都是我干的茴晋。 我是一名探鬼主播陪捷,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼回窘,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了市袖?” 一聲冷哼從身側(cè)響起啡直,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎苍碟,沒想到半個(gè)月后酒觅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡微峰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年舷丹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜓肆。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡颜凯,死狀恐怖谋币,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情症概,我是刑警寧澤蕾额,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站彼城,受9級(jí)特大地震影響诅蝶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜募壕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一调炬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舱馅,春花似錦筐眷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至资溃,卻和暖如春武翎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背溶锭。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來泰國打工宝恶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人趴捅。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓垫毙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親拱绑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子综芥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容