• 鍍金池/ 教程/ Android/ Android碎片/片段
    Android 應用組件
    使用布局文件自定義Android組件
    Android通知
    Android主題示例
    Android JetPlayer實(shí)例
    Android MediaPlayer(多媒體播放)
    Android AbsoluteLayout
    Android FrameLayout
    Android Gestures/手勢
    Android AutoCompleteTextView(自動(dòng)完成)實(shí)例
    Android 資源組織和訪(fǎng)問(wèn)
    Android ListView
    Android GridView
    Android數據備份
    Android撥打電話(huà)
    Android發(fā)送短信/SMS
    Android ProgressDialog
    SimpleCursorAdapter
    Android發(fā)送電子郵件
    Android Activity
    Android TextView
    Android事件處理
    Android TableLayout
    Android加載Spinner
    Android內容提供者
    Android自定義字體
    Android Service
    Android CheckBox
    Android Intent過(guò)濾器
    Android LinearLayout
    Android登錄實(shí)例
    Android RadioButton
    Android樣式和主題
    Android自定義組件及屬性
    Android UI控件
    Android Animation(動(dòng)畫(huà))實(shí)例
    Android Camera(攝像頭)
    Android ToggleButton
    Android Clipboard(復制/剪貼板)
    Android音頻捕獲(錄音)
    發(fā)布Android應用
    Android Alertdialog(警告對話(huà)框)
    Android圖片效果
    Android內部存儲
    Android基于位置服務(wù)
    Android RadioGroup
    Android AutoCompleteTextView
    Android Bluetooth(藍牙)實(shí)例
    Android RelativeLayout
    Android最佳實(shí)踐
    Android本地化
    Android自定義組件
    Android教程
    Android 架構
    Android UI布局
    Android Button
    Android Hello World示例
    Android音頻管理器實(shí)例
    ArrayAdapter
    Android拖放
    Android碎片/片段
    Android圖片切換
    Android JSON解析器
    Android開(kāi)發(fā)環(huán)境搭建
    Android Spinner
    Android樣式示例
    使用活動(dòng)代碼自定義Android組件
    Android ImageButton
    Android EditText
    Android廣播接收器

    Android碎片/片段

    片段(Fragments)是一個(gè)應用程序的用戶(hù)界面或行為活動(dòng),使活動(dòng)更加模塊化設計,可以放置在一塊。一個(gè)片段是一種子活動(dòng)。以下要點(diǎn)有關(guān)片段:

    • 片段都有自己的布局和規范自己的行為與生命周期回調。

    • 可以添加或刪除片段在活動(dòng)而活動(dòng)運行。

    • 可以將多個(gè)片段在一個(gè)單一的活動(dòng),建立一個(gè)多窗格UI。

    • 片段可用于多種活動(dòng)。

    • 片段的生命周期是密切相關(guān),其主機活動(dòng)的生命周期,表示當活動(dòng)暫停時(shí),所有的片段也將停止活動(dòng)。

    • 片段可以實(shí)現的行為當沒(méi)有用戶(hù)界面組件。

    • 片段加入被加入到 Android API 在Honeycomb版本的Android(API版本11)。

    創(chuàng )建片段可以擴展Fragment 類(lèi)并在活動(dòng)的布局文件中聲明片段,可以插入到活動(dòng)布局的一個(gè)片段到<fragment>元素。

    介紹片段之前,有一個(gè)限制,因為可以在一個(gè)特定的時(shí)間點(diǎn),屏幕上只顯示單個(gè)活動(dòng)。所以不能夠分割設備屏幕來(lái)分別控制不同部位。但隨著(zhù)引進(jìn)片段得到了更多的靈活性,并在屏幕上同一時(shí)時(shí)間可以將一個(gè)單一的活動(dòng)取消限制?,F在有一個(gè)單一的acitivity ,但每個(gè)acitivity 可以包括多個(gè)片段,它們有自己的布局,活動(dòng)和完整的生命周期。

    下面是一個(gè)典型的例子,兩個(gè)UI模塊定義的片段可以組合成平板電腦的設計的一個(gè)活動(dòng),這里在手機中設計分離。

    Android Fragment

    應用程序嵌入活動(dòng)A中兩個(gè)片段,在一個(gè)平板大小的設備上運行。然而在手機大小的屏幕上,有兩個(gè)片段有足夠的空間,所以Activity A包括片段物品的清單,當用戶(hù)選擇一篇文章時(shí),它開(kāi)始使用Activity B,包括閱讀第二片段的文章。 

    片段生命周期

    Android 的碎片有自己的生命周期,非常相似 Android 中的 Activity 。本節主要闡述其生命周期在不同階段。

    階段 I: 當被創(chuàng )建了一個(gè)片段,它通過(guò)以下?tīng)顟B(tài):

    • onAttach()

    • onCreate()

    • onCreateView()

    • onActivityCreated()


    階段 II: 當片段變得可見(jiàn),它通過(guò)這些狀態(tài):

    • onStart()

    • onResume()

    階段 III: 當碎片進(jìn)入后臺模式,它通過(guò)這些狀態(tài):

    • onPaused()

    • onStop()

    階段 IV: 當片段被破壞,它通過(guò)以下?tīng)顟B(tài):

    • onPaused()

    • onStop()

    • onDestroyView()

    • onDestroy()

    • onDetach()

    Activity Fragment Lifecyle

    如何使用碎片?

    這里演示簡(jiǎn)單的步驟來(lái)創(chuàng )建碎片:

    • 首先,要決定有多少碎片要在活動(dòng)中要使用。例如,要使用兩個(gè)片段處理設備的橫向和縱向模式。

    • 在下一頁(yè)的碎片數量的基礎上,創(chuàng )建類(lèi)將擴展 Fragment 類(lèi)。上述片段類(lèi)的回調函數??梢愿鶕蟾采w所有的功能。

    • 對應每一個(gè)片段,需要在XML文件中創(chuàng )建布局。這些文件將根據布局來(lái)定義碎片。

    • 最后修改活動(dòng)文件替換片段,根據需要來(lái)定義實(shí)際的邏輯。

    這里是重要的 覆蓋在Fragment 類(lèi)的方法,如下列表:

    • onCreate() 系統調用時(shí)創(chuàng )建片段。初始化片段要保留暫?;蛲V箷r(shí)的片段,然后恢復其它組成部分。

    • onCreateView() 當片段第一次繪制用戶(hù)界面時(shí),系統調用這個(gè)回調。要繪制一個(gè)UI為片段,必須返回一個(gè) View 組件,此方法是片段的根布局。返回空片段不提供一個(gè)UI。

    • onPause() 系統調用此方法,作為第一次指示用戶(hù)離開(kāi)此片段。這通常是提交更改操作,持久化時(shí)間超過(guò)當前用戶(hù)會(huì )話(huà)時(shí)間。

    例子

    下面的這個(gè)例子將解釋如何創(chuàng )建片段 - Fragments。在這里將創(chuàng )建兩個(gè)片段并且當其中一個(gè)使用的設備是在橫向模式下,另一個(gè)片段將被用在縱向模式下。按照下面的步驟類(lèi)似于在前面創(chuàng )建的Hello World范例:

    步驟 描述
    1 使用Eclipse IDE創(chuàng )建Android應用程序,并將其命名為MyFragments在一個(gè)包c(diǎn)om.example.myfragments下 ,使用空活動(dòng)。
    2 主要活動(dòng)文件MainActivity.java的代碼修改為如下。在這里將檢查設備的方向并在不同的片段之間進(jìn)行切換。
    3 在 com.example.myfragments包下創(chuàng )建兩個(gè)java文件PM_Fragment.java和LM_Fragement.java來(lái)定義片段以及相關(guān)方法。
    4 創(chuàng )建布局文件 res/layout/lm_fragment.xml 并布局定義這兩個(gè)片段。
    5 修改 res/layout/activity_main.xml 文件的默認內容,以包括兩個(gè)片段。
    6 res/values/strings.xml文件中定義所需的常量
    7 運行該應用程序啟動(dòng) Android 模擬器來(lái)驗證應用程序所做的修改結果。

    以下是主要活動(dòng)文件的內容 src/com.example.mycontentprovider/MainActivity.java 修改

    package com.example.myfragments;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.app.FragmentManager;
    import android.app.FragmentTransaction;
    import android.content.res.Configuration;
    import android.view.WindowManager;
    
    public class MainActivity extends Activity {
    
       @Override
       protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
    
          Configuration config = getResources().getConfiguration();
    
          FragmentManager fragmentManager = getFragmentManager();
          FragmentTransaction fragmentTransaction = 
          fragmentManager.beginTransaction();
    
          /**
          * Check the device orientation and act accordingly
          */
          if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
             /**
             * Landscape mode of the device
             */
             LM_Fragment ls_fragment = new LM_Fragment();
             fragmentTransaction.replace(android.R.id.content, ls_fragment);
          }else{
             /**
             * Portrait mode of the device
             */
             PM_Fragment pm_fragment = new PM_Fragment();
             fragmentTransaction.replace(android.R.id.content, pm_fragment);
          }
          fragmentTransaction.commit();
       }
        
    }

    創(chuàng )建兩個(gè)的片段文件LM_Fragement.java 和 PM_Fragment.java在com.example.mycontentprovider 包下。

    以下是LM_Fragement.java文件的內容 :

    package com.example.myfragments;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    
    public class LM_Fragment extends Fragment{
       @Override
       public View onCreateView(LayoutInflater inflater,
          ViewGroup container, Bundle savedInstanceState) {
          /**
           * Inflate the layout for this fragment
           */
          return inflater.inflate(
          R.layout.lm_fragment, container, false);
       }
    }

    下面是 PM_Fragement.java 文件的內容:

    package com.example.myfragments;
    
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.
                
            
    草莓视频在线观看视频6_免费草莓视频_草莓视频在线下载免费官网_草莓视频黄色在线观看