工具的使用可以看 這篇贮尖,更新的可能和原來相比有點點變化个扰,問題不大
這篇主要介紹一下Android上簡單的控件布局矾削。用了很多Android Developers的文檔肩刃,為了方便貼的中文。不過建議看的時候去看看原版速缨,中文名詞翻譯有的就很難受锌妻,這里我把名詞基本都換成英文了
Layouts
首先(不怎么準確的)說一下名字里帶view和帶layout的區(qū)別,簡單來說view用來實際呈現(xiàn)內(nèi)容旬牲,layout決定他們在界面上怎么呈現(xiàn)出來仿粹,包括位置、動畫等邏輯原茅。下面是官方介紹
Layout
可定義應用中的界面結構(例如 Activity 的界面結構)吭历。布局中的所有元素均使用 View
和 ViewGroup
對象的層次結構進行構建。View
通常繪制用戶可查看并進行交互的內(nèi)容擂橘。而ViewGroup
是不可見容器container晌区,用于定義 View
和其他 ViewGroup
對象的布局結構,如圖
View對象通常稱為widgets
通贞,可以是眾多子類之一朗若,例如 Button
或 TextView
。ViewGroup
對象通常稱為layouts
昌罩,可以是提供其他布局結構的眾多類型之一哭懈,例如 LinearLayout
或 ConstraintLayout
。
有兩種聲明布局的方法
- XML布局文件
可將應用外觀代碼與控制其行為的代碼分開茎用。使用 XML 文件還有助于為不同屏幕尺寸和屏幕方向提供不同布局 - 運行時實例化
代碼中實現(xiàn)并調(diào)整屬性
XML
XML即ExtentsibleMarkup Language(可擴展標記語言) 遣总,是一種跨平臺的睬罗,與軟、硬件無關的旭斥,處理與傳輸信息的工具容达。嚴格區(qū)分大小寫,具有嚴格樹狀結構(對比看起來很像但實際本質不同的html)琉预。
每個layout文件都必須只包含一個根元素董饰,并且該元素必須是View對象或 ViewGroup 對象
保存在res/layout/目錄
編譯應用時,系統(tǒng)會將每個 XML 布局文件編譯成 View
資源圆米。在 Activity.onCreate()
回調(diào)實現(xiàn)內(nèi)加載應用代碼中的布局資源卒暂,通過調(diào)用 setContentView()
,并以 R.layout.*layout_file_name*
形式向應用代碼傳遞布局資源的引用娄帖。啟動 Activity 時也祠,Android 框架會調(diào)用 Activity 中的 onCreate()
回調(diào)方法
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
}
Attributes
- id
- layout_somthing
- ...
常見Layout & View
- LinearLayout
- RelativeLayout
- ConstraintLayout
- 使用Adapter的布局
- ListView
- RecyclerView
- GridView
- TextView
- ImageView
- Button
- CardView
- 進階:自定義
- ...
寫個Demo?
稍微進階:使用intent和onClickListener實現(xiàn)點擊Button跳轉功能
Button button = (Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(FirstActivity.this, SecondAcitivity.class);
startActivity(i);
}
});
喜聞樂見的作業(yè)環(huán)節(jié)
極其簡單的作業(yè):賈寶玉的個人主頁
InitActivity里一個簡單的你好
按鈕近速,點擊跳轉到MineActivity展示賈寶玉的個人信息诈嘿,包括頭像、名字削葱、個人介紹奖亚,以及并排的三個按鈕,點擊后分別Toast隨便一句話析砸。歡迎加入更多操作昔字,想加多少加多少
嘮叨幾句,剛開始不熟悉可以拖控件放上去首繁,但是最好不要這么搞…一是看起來不怎么優(yōu)雅作郭,二是容易造成硬核代碼,奇怪margin之類的
說起來硬核代碼弦疮,xml里寫硬核代碼看著實在是太氣人了orz十分不可取夹攒。就比如為了居中手寫margin、相對位置關系混亂一看就是全程拖放控件胁塞、命名不規(guī)范語法錯誤不修正咏尝、或者縮進混亂一個control+alt+L都舍不得按...預覽的時候看不太出來,表面光鮮亮麗風平浪靜啸罢,看代碼能把你氣的吐血()就十分不可取编检,一定要注意這些簡單的細節(jié)。交作業(yè)的時候有這類問題我會私戳提醒的哦(兇(別害怕emm(不對伺糠,要害怕蒙谓。兇斥季。硬核代碼誰愿意看啊 誰愿意看誰看反正我不看 =n=
也別太靠預覽定布局训桶,因為需要適配的屏幕具體數(shù)據(jù)是動態(tài)的累驮,寫布局看起來簡單但是邏輯也需要清晰魯棒。