Android交流會-碎片Fragment,閒聊單位與尺寸
- 女孩:又週末了哦~
- 男孩:那麼今日來開個交流會,我們也學一學人家高大尚的大會,自己開一個,廣州站,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()方法。
靜態:
動態:
動態載入步驟:
1. 建立新增的Fragment例項;
2. 獲取FragmentManager,呼叫getFragmentManager()方法;
3. 開啟事務,呼叫beginTransaction()方法;
4. replace();
5. 呼叫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 點贊
相關推薦
Android交流會-碎片Fragment,閒聊單位與尺寸
女孩:又週末了哦~ 男孩:那麼今日來開個交流會,我們也學一學人家高大尚的大會,自己開一個,廣州站,Android開發攻城獅交流會~ 1.Fragment概要: Android從3.0開始引入了Fragment的概念,中文意思為碎片,它的出現是為了
Android 基礎:Fragment的介紹與應用,QQ底欄,側滑選單
Fragment介紹 Android是在Android 3.0 (API level 11)開始引入Fragment的。可以把Fragment當成Activity的一個介面的一個組成部分,甚至Activity的介面可以完全有不同的Fragment組成,而且Fragmen
【Android】安卓開發之activity如何傳值到fragment,activity與fragment傳值
作者:程式設計師小冰,GitHub主頁:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 大家知道,我們利用acti
Android的碎片fragment和activity之前的關係
1、activity與fragment傳值 當activity動態載入fragment時可以通過fragment的setArguments()傳入值; 在fragment類中通過fragment的getArguments()方法獲得傳入的值 ; Google提出
[譯]Android Activity 和 Fragment 狀態儲存與恢復的最佳實踐
譯者亦楓注:對於 Activity、Fragment 和 View 是如何儲存與恢復狀態的問題,相信很多開發人員都處於一知半解的狀態。最近剛好在總結 Fragment 的使用注意事項,無意中從網上看到國外的一篇好文,對這個問題做了一個全面的解析。加之使用視
Android利用碎片fragment實現底部標題欄(Github模板開源)
在安卓開發當中,一個十分重要的佈局則是底部標題欄了,擁有了底部標題欄,我們就擁有了整個軟體UI開發的框架,一般而言,整個軟體的佈局首先就是從底部標題欄開始構建,然後再開始其他模組的編寫,組成一個完善的軟體,那麼如何才能夠編寫一個底部標題欄呢,我這裡使用了碎片來實現,當然是碎片的動態載入的方式,靜態載入的話則不
Android Google Map V2,提供MapFragment,可以與使用Fragment一樣,使用Google Map了
當前LBS的應用越來越火爆,LBS的應用開發就離不開Google Map。Google Map API大家一定也很熟悉,在PC瀏覽器版本上,Google Map API已經到了V3版本了。 不過在android平臺上,Google 今年12月份推出了V2版本,其最大的特點是提供了MapFragmen
android解析度與尺寸適配,UI切圖方法
1.android怎樣做適配 第一圖片資源的適配 一般圖片資原始檔下包含下列五個圖片資原始檔夾drawable-xxhdpi,drawable-xhdpi,drawable-hdpi,drawable-mdpi,drawable-ldpi drawable-xxhdpi,drawable-xhdpi,一般作為
今天總結一下我對Fragment的理解(碎片的入棧與出棧,碎片的巢狀)
1.碎片的巢狀! getFragmentManager到的是activity對所包含fragment的Manager,而如果是fragment巢狀fragment,那麼就需要利用getChildFragmentManager()了。 getFragmentManager(
android studio 菜單中的app運行按鈕上有個叉號,原因與解決辦法(自己去百度)
代碼 問題 style post fontsize XML idm 出現 studio http://blog.csdn.net/sz0268/article/details/51706397 : 在Android studio寫代碼中,直接建立項目,寫代碼然後運行是不會
Android使用Fragment,不能得到Fragment內部控件,findViewById()結果是Null--已經解決
文本 match ces ear creat 能夠 -s 兼容 mat 程序很easy。好長時間沒有搞定。郁悶。。。。。。。。。。。。在論壇咨詢,最終找到答案。 描寫敘述: 一個Activity:MainActivity。內部是一個Fragment:FragmentA。
Date.parse()轉化日期為時間戳,ios與Android兼容寫法
時間 日期 function 格式 pla ron urn for strong 把固定格式日期轉化為時間戳: //格式化當地日期 new Date(‘2017-11-11 0:0:0‘) //結果為:Sat Nov 11 2017 00:00:00 GMT+0800 (
Android TabLayout+ViewPager+Fragment實現tab欄的時候,無法實時更新ViewPager內的Fragment問題終極解決方法
TabLayout+ViewPager+Fragment模式在應用中必不可少,有時候我們可能會遇到tab欄會動態改變的問題,如新增,或刪減,這時候就需要把viewpager內相應的fragment新增或刪減; 如想做以下等操作? 1、更新單個item mDataList.remove(0
Android 元件之Fragment與Activity通訊小述
一、概述 本節主要介紹一下Fragment與Activity的互動方式,當然方法肯定並不是唯一的,我在這裡只是將自己平時的思路記錄一下,算是拋磚引玉 二、Fragment接收Activity傳遞的資料 我們想從Fragment內獲取它的託管Activity中的資料,這種情況我
android for opencv (2)byte[] ,Bitmap 與 Mat 型別轉換
(一) byte[] 轉換為Mat,Mat 轉 byte[] public Mat byteAndMat(Mat image) { int width = image.cols(); int height = image.rows(); int dims = image
【轉】解決在Android設備播放音頻與其他應用重音的問題,並監聽耳機的控制按鈕
text brush neo 清單 類型 ext.get 現象 結束 位置 概述 在安卓開發中免不了需要播放一點音樂了,音頻了。但是這時候有別的應用正在播放,這時候就會出現重音的現象,完全影響用戶體驗,我們的項目就遇上了這樣的尷尬,然後查找了一些文檔,記錄一下; 管理音
android長度單位與內外邊距
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android 開發解決APP在18:9,18.5:9,19:9,19:10尺寸的手機上不能全屏的問題
由於現在Android碎片化嚴重,谷歌又不能統一聯盟,所以出現了各種奇奇怪怪螢幕比例的手機, 現在的小米mix系列,三星S8、S9系列,OPPO R15,vivo X21這些等等。。。。 都是18:9,18.5:9,19:9,19:10各種奇葩比例,導致Android開發時會遇到APP不能在這些
android與PC,C#與Java 利用protobuf 進行無障礙通訊【Socket】
轉自https://www.cnblogs.com/TerryBlog/archive/2011/04/23/2025654.html protobuf 是什麼? Protocol buffers是一種編碼方法構造的一種有效而可擴充套件的格式的資料。 谷歌使用其內
android開發之fragment與activity之間相互跳轉
Fragment的產生與介紹 Android執行在各種各樣的裝置中,有小螢幕的手機,超大屏的平板甚至電視。針對螢幕尺寸的差距,很多情況下,都是先針對手機開發一套App,然後拷貝一份,修改佈局以適應平板神馬超級大屏的。難道無法做到一個App可以同時適應手機和平板麼