1. 程式人生 > >Android交流會-碎片Fragment,閒聊單位與尺寸

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如何傳值到fragmentactivityfragment傳值

作者:程式設計師小冰,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()轉化日期為時間戳iosAndroid兼容寫法

時間 日期 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 元件之FragmentActivity通訊小述

一、概述 本節主要介紹一下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:918.5:919:919:10尺寸的手機上不能全屏的問題

由於現在Android碎片化嚴重,谷歌又不能統一聯盟,所以出現了各種奇奇怪怪螢幕比例的手機, 現在的小米mix系列,三星S8、S9系列,OPPO R15,vivo X21這些等等。。。。 都是18:9,18.5:9,19:9,19:10各種奇葩比例,導致Android開發時會遇到APP不能在這些

androidPCC#Java 利用protobuf 進行無障礙通訊【Socket】

轉自https://www.cnblogs.com/TerryBlog/archive/2011/04/23/2025654.html protobuf 是什麼?   Protocol buffers是一種編碼方法構造的一種有效而可擴充套件的格式的資料。 谷歌使用其內

android開發之fragmentactivity之間相互跳轉

   Fragment的產生與介紹 Android執行在各種各樣的裝置中,有小螢幕的手機,超大屏的平板甚至電視。針對螢幕尺寸的差距,很多情況下,都是先針對手機開發一套App,然後拷貝一份,修改佈局以適應平板神馬超級大屏的。難道無法做到一個App可以同時適應手機和平板麼