女孩:又周末了哦~ 男孩:那麼今日來開個交流會,我們也學一學人家高大尚的大會,自己開一個,廣州站,Android開發攻城獅交流會~ 1.Fragment概要: Android從3.0開始引入了Fragment的概念,中文意思為碎片,它的出現是為了更好展示UI的設計,讓程式更加得到充分的展示。Frag ...
- 女孩:又周末了哦~
- 男孩:那麼今日來開個交流會,我們也學一學人家高大尚的大會,自己開一個,廣州站,Android開發攻城獅交流會~
1.Fragment概要:
Android從3.0開始引入了Fragment的概念,中文意思為碎片,它的出現是為了更好展示UI的設計,讓程式更加得到充分的展示。Fragment的出現,如微信的額主界麵包含多個Fragment,使得微信功能更加簡潔明瞭。
需要掌握的知識點有:Fragment概要,生命周期,載入的方法(分靜態和動態載入),Fragment與Activity之間的通信哦,掌握這些基礎就OK了。
對於理解Fragment,可以說你在生活中看過的新聞,點擊進入新聞詳情界面。
- 女孩:Fragment有它自己的生命周期嗎?
- 男孩:有的,它有自己的生命周期,不過它的生命周期依賴activity的生命周期,如同夫妻一樣,不過這有點像其中一方離開不了另一方的感覺~
2.Fragment生命周期
Fragment有自己的生命周期,但它會受所屬的Activity的生命周期影響,因為一個Fragment是被嵌入到一個Activity中的。
Fragment有四種狀態:運行狀態,暫停狀態,停止狀態,銷毀狀態。
接下來看看Fragement的生命周期,圖片來源官方:
從上而下:
添加Fragment -> onAttach() -> onCreate() -> onCreateView() -> onActivityCreated() -> onStart() -> onResume() -> 運行狀態 -> onPause() -> 暫停狀態 -> onStop() -> 停止狀態 -> onDestroyView() -> onDestroy() -> onDetach() -> 銷毀狀態。
onAttach():
一旦片段與其活動相關聯就被調用;
onCreate():
片段被調用創建;
onCreateView():
創建並返回相關的視圖結構;
onActivityCreated():
表示活動已被創建完成了,這裡是activity創建成功;
onStart():
片段對用戶可見;
onResume():
片段與用戶開始交互;
onPause():
片段與用戶不再交互;
onStop():
片段不再對用戶可見;
onDestroyView():
銷毀與其View相關資源;
onDestroy():
銷毀一切片段;
onDetach():
片段與其活動不再相關聯。
- 女孩:生命周期介紹完了?
- 男孩:嗯,介紹完了,這些就是了,圖片的提供是官方的,可以多看看,Fragment的生命周期可以和activity的生命周期一起瞭解,這比較容易理解~
製作底部導航欄以及Fragment實現切換功能
圖片資源:
需要底部三個點擊按鈕的圖片資源:
main_button_1.png,
main_button_2.png,
main_button_3.png.
以及點擊變換的圖片資源:
main_button_1_selected.png,
main_button_2_selected.png,
main_button_3_selected.png.
以上圖片資源都放進drawable文件夾中
- 女孩:哥,這些圖片資源我沒有哦~
- 男孩:沒關係,瞭解一下就行,有這需要就行,懂得運用就行~
activity_mian佈局
- 女孩:舉例子了嗎?
- 男孩:實例一下,最後再慢慢細分~
在MainActivity頁面中主要有兩個區域:
一個是放Fragment 的main_body
一個是放底部導航欄的main_bottom_bar
主要的Fragment代碼塊:
主要的底部導航欄的代碼塊:
實例化控制項:
實現底部導航欄的響應
導航欄文本顏色和圖片切換效果的方法寫好了,接下來是點擊響應的方法
給MainActivity加上View.OnClickListener介面
在生成的onClick()方法中加上導航欄區域的響應
別忘了在initView()中添加監聽器
然後通過我之前寫的插件自動生成三個Fragemnt ,就可以了不用管生成的Fragement_1/2/3.java文件了,
插件文章
《 Android開發的插件Code Generator與LayoutCreator的安裝與使用,提升你的開發效率 》
https://www.jianshu.com/p/9d2bf0513443
三個fragment的顯示和切換
在MainActivity里把AppCompatActivity改為FragmentActivity
把Fragment加到Activity里的代碼
通常用這個來展示,但是代碼過長,我們來簡化一下
我們先來添加一個setMain() 方法,來顯示打開界面時,顯示的初始頁面
實現點擊底部導航欄來切換響應的fragment,我們在onClick()中添加即可
3.創建Fragment
創建一個Fragment的子類,繼承Fragmennt類,重寫onCreateView()方法。
靜態:
動態:
動態載入步驟:
- 創建添加的Fragment實例;
- 獲取FragmentManager,調用getFragmentManager()方法;
- 開啟事務,調用beginTransaction()方法;
- replace();
- 調用commit()方法提交。
4.Fragment和activity之間的通信
Fragment和activity之間的通信,FragmentManager的findFragmentById()方法來獲取相應碎片的實例。
MyFragment myFragment = getFragmentManager().findFragmentById(R.id.fragment);
接著通過調用getActivity()方法來獲取當前片段和相關聯的活動實例:
MainActivity activity = getActivity();
閑聊單位和尺寸
px,pt,dp,sp
- 女孩:哥,px,pt是?
男孩:px在Android中為最小元素單元,px為像素,pt是磅數的意思,在Android通常作為字體的單位來用~
- 女孩:那dp和sp呢?
男孩:dp是密度無關像素的意思,sp作為與dp相同的設計理念,是可伸縮像素的意思~
到此就ok了,接下來會不斷往高處學,讓我們一起慢慢探索吧~
小禮物走一走 or 點贊