日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
AndroidFragment生命周期:多屏幕支持

在使用fragment之前,Fragment的生命周期是一個需要關心的問題。目前,要想在Android上開發(fā)出一款APP必須得考慮到“碎片化”的問題,或者說必須考慮多屏幕適配,這是每一個開發(fā)者都必須面對的問題。

成都網站建設哪家好,找創(chuàng)新互聯(lián)建站!專注于網頁設計、網站建設公司、微信開發(fā)、成都小程序開發(fā)、集團成都企業(yè)網站建設等服務項目。核心團隊均擁有互聯(lián)網行業(yè)多年經驗,服務眾多知名企業(yè)客戶;涵蓋的客戶類型包括:木包裝箱等眾多領域,積累了大量豐富的經驗,同時也獲得了客戶的一致表揚!

現在市場上手機的屏幕分辨率、尺寸五花八門,更糟糕的是,除了手機外還有平板!我們都清楚,就單單屏幕尺寸來說手機和平板差異很大。所以,當我們開 發(fā)應用程序的時候,要謹記我們的APP應該能適用于不同的設備上而且必須達到***效果,這樣才能確保獲得更佳用戶體驗。于是問題就產生了,我們需要調整應 用在手機和平板上顯示相同的效果,也就是現在所說的多屏幕適配。在之前的一篇帖子里,我已經講了怎么用Android的一些特性做多屏幕支持,比如創(chuàng)建不同的布局文件等等。這個方式現在也還可以這么做,但是已經不能滿足我們的要求了。

一個經典的例子是,應用中有一個列表,用戶點擊列表條目就可以顯示詳細信息。這種情況下,我們可以使應用在手機和平板上有不同的體驗效果。在手機上需要兩個Activity來完成這個功能,如圖:

當用戶點擊后,出現的界面是這樣的:

而在平板上,我們我們需要好好利用屏幕,把列表和詳情顯示在一起,如圖:

從上面的例子我們清楚地看到,我們需要一個方法去“合并Activity”,讓其中一個Activity調用另一個時,兩個Activity都能同時或者先后顯示。我們需要在不重寫代碼的情況下重新組織界面布局,而僅僅使用多布局來做是不行的,我們需要別的技術。

Fragment

在Android3.0上引入了一個新概念叫Fragment。它有自己的布局文件,可以作為組件排布,也可以 相互組合去實現不同的布局顯示。使用Fragment可以重復利用代碼,并且可以滿足不同設備尺寸的需求。Fragment不能單獨存在,只能存在于 Activity中,而一個Activity可以擁有多個Fragment。很重要的一點是,Fragment可以和Activity中的其它組件一起使 用,無需重寫所有Activity的接口。所以使用Fragment就可以這樣來完成上例中“主界面—詳細界面”的APP需求。

在手機上是這樣顯示的:

而在平板上是這樣的:

Fragment生命周期

既然我們已經知道了Fragment很好用,那么我們也需要知道它的工作原理。Fragment只能存在于(作為容器的)Activity中,每一 個Fragment都有自己的視圖結構,可以像我們之前那樣載入布局。Fragment的生命周期更加復雜,因為它有更多的狀態(tài),如圖:

我們來看一下Fragment完整的生命周期。

  • 在Fragment生命周期開始,onInflate方法被調用。要注意的是,這個方法只在我們直接用標簽在布局文件中定義的時候才會被調用。我們可以在這個方法中保存一些在xml布局文件中定義的配置參數和一些屬性。
  • 這一步過后就輪到onAttach被調用了。這個方法在Fragment綁定到它的父Activity中的時候被調用,我們可以在這里保存它和Activity之間的引用。
  • 之后onCreate會被調用。這是最重要的步驟之一。Fragment就是在這一步中產生的,可以用這個方法來啟動其它線程來檢索數據,比如從遠程服務器中啟動。
  • onCreateView這個方法是在Fragment創(chuàng)建自己的視圖結構的時候被調用,在這個方法中我們會載入Fragment的布局文件,就像我們在ListView控件中載入布局一樣。在這個過程中,我們不能保證父Activity是否已經創(chuàng)建,所以有一些操作我們不能在這里完成。
  • 可以看到,在onActivityCreated后Activity才算是建立完成。到這一步,我們的Activity就創(chuàng)建成功并激活了。我們可以隨時使用它了。
  • 下一步就是onStart了,在這里我們做的事和Activity中的onStart一樣,在這個方法中Fragment雖然可以顯示,但是還不能和用戶進行交互,只有在onResume后Fragment才能開始和用戶進行交互操作。在這個過程后,Fragment就已經啟動并運行起來了。
  • 也許會暫停Activity。Activity的OnPause方法會被調用。這時候Fragment的onPause方法也會被調用。
  • 系統(tǒng)也可能會銷毀Fragment的視圖顯示,發(fā)生這種情況時onDestroyView方法就被調用了。
  • 之后,如果系統(tǒng)需要完全銷毀整個Fragment的話,onDestroy方法就會被調用了。這時候我們就需要釋放掉所有可用的連接了,因為這個時候Fragment馬上就要被殺掉了。雖然是在準備銷毀的過程中,但是Fragment仍然綁定在父Activity中。
  • ***一步就是把Fragment從Activity中解綁,即調用onDetach方法。

怎么創(chuàng)建一個Fragment

現在我們了解了Fragment的生命周期了,接著我們就需要知道怎么創(chuàng)建一個Fragment并綁定到Activity中,***件要做的事就是繼承android.app.Fragment來寫一個Fragment,假設我們的Fragment叫做Fragment1,創(chuàng)建和定義如下:

 
 
 
 
  1. public class Fragment1 extends Fragment {
  2. ...
  3. }

就像我們上面說的,Fragment只能存在于Activity中,所以我們必須要在某處定義它,有兩種方式:

- 直接在xml布局文件中定義;

- 在xml布局文件中定義一個占位符,然后動態(tài)地在Activity中操作Fragment;

我們定義Fragment的方式會影響它的生命周期,因為在上述***種情況下onInflate方法會被調用,而第二種情況下它的生命周期是從onAttach方法開始的。

如果我們在XML文件中定義Fragment的話,我們需要:

 
 
 
 
  1.                         class="com.survivingwithandroid.fragment.Fragment1"
  2.               android:layout_width="match_parent"
  3.               android:layout_height="20dp"/>

然而如果我們在XML中用占位符的話,需要再做一些工作。

布局框架和Fragment

如果我們在XML布局文件中定義Fragment的話,就不能自由、動態(tài)修改Fragment了,還有別的方法可以讓我們可以更靈活地操作:使用時需要在XML文件中定義:

 
 
 
 
  1.              android:layout_width="match_parent"
  2.              android:layout_height="200dp"/>

在Activity里面還需要做一點工作,因為我們必須手動初始化Fragment,然后把它“插入”到FrameLayout中。

 
 
 
 
  1. public class MainActivity extends Activity {
  2.   
  3. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5.     super.onCreate(savedInstanceState);
  6.     setContentView(R.layout.activity_main);
  7.   
  8.     Fragment2 f2 = new Fragment2();
  9.     FragmentTransaction ft = getFragmentManager().beginTransaction();
  10.     ft.replace(R.id.fl1, f2);
  11.     ft.commit();
  12. }

關于FragmentTransaction等內容的討論我們留到下一篇文章再說吧,本文就到這里了。

【移動開發(fā)視頻課程推薦】

  • iOS培訓之Objective-C基礎視頻教程(40集)
  • Cocos2d-x從零開始【5天掌握跨平臺游戲開發(fā)利器】(12集)
  • Objective C編程基礎(24集)
  • Android技術輕松入門課程(12集)
  • 微信開放平臺-Android應用接入(4集)
  • Cocos2d-x跨平臺游戲開發(fā)入門基礎(29集)
  • iOS開發(fā)視頻教程-iOS網絡編程【高級篇】(39集)
  • 移動應用用戶體驗設計高級課程(60集)
  • 從零學習iOS開發(fā)–UI多視圖(30集)
  • iOS開發(fā)視頻教程【基礎入門篇】

網站題目:AndroidFragment生命周期:多屏幕支持
標題鏈接:http://www.5511xx.com/article/dpihdeh.html