碎片的例子請參考android學習手冊,共9章,108個例子。隨便看看源文件,例子都是有交互性和可操作性的。
?源代碼采用android studio的目錄結構,突出代碼,文檔以文檔結構圖顯示,可以快速定位。從360手機助手下載,圖標上有殼。
Android可以在各種設備上運行,包括小屏幕手機、大屏幕平板電腦甚至電視。鑒於屏幕尺寸的差距,很多情況下都是先為手機開發壹個App,再做壹個拷貝,修改布局以適應平板神馬的超大屏幕。壹個App不能同時適配手機和平板嗎?當然要有。片段的出現解決了這樣的問題。妳可以把片段看作活動的壹個接口的組成部分,甚至活動的接口也可以完全由不同的片段組成。更帥的是,fragment有自己的生命周期,接收和處理用戶事件,不需要寫壹堆代碼對Activity中的控件進行事件處理。更重要的是,妳可以動態地添加、替換和刪除壹個片段。
2、碎片的生命周期
碎片必然存在於依賴和活動中,所以活動的生命周期會直接影響碎片的生命周期。官網這張圖說明了兩個生命周期的關系:
您可以看到,除了Activity,Fragment還有幾個額外的生命周期回調方法:
onAttach(活動)
當片段與活動相關聯時調用。
onCreateView(LayoutInflater,ViewGroup,Bundle)
創建片段的視圖。
onActivityCreated(捆綁包)
當Activity的onCreate方法返回時調用。
onDestoryView()
對應onCreateView,在片段視圖被移除時調用。
onDetach()
對應onAttach,在片段和活動的關聯取消時調用。
註意:除onCreateView外,如果重寫所有其他方法,必須調用父類來實現方法。
3.碎片的靜態使用
呵呵,終於要用了~ ~
這是使用Fragment最簡單的方法,它作為普通控件直接寫在Activity的布局文件中。步驟:
1.繼承Fragment並重寫onCreateView來確定Fragment的布局。
2.在活動中聲明這個片段,就像普通視圖壹樣。
下面是壹個例子(我使用兩個片段作為活動的布局,壹個片段用於標題布局,壹個片段用於內容布局):
TitleFragment的布局文件:
[html]查看純文本打印?
& lt?xml?version="1.0 "?編碼="utf-8 "?& gt
& ltRelativeLayout?xmlns:Android = "/apk/RES/Android "
Android:layout _ width = " match _ parent "
android:layout_height="45dp "
Android:background = " @ drawable/title _ bar "?& gt
& ltImageButton
Android:id = " @+id/id _ title _ left _ BTN "
Android:layout _ width = " wrap _ content "
Android:layout _ height = " wrap _ content "
Android:layout _ center vertical = " true "
android:layout_marginLeft="3dp "
Android:background = " @ drawable/show left _ selector "?/& gt;
& lt文本視圖
Android:layout _ width = " fill _ parent "
Android:layout _ height = " fill _ parent "
安卓:重力= "中心"
Android:text= "我不是微信"
android:textColor="#fff "
android:textSize="20sp "
android:textStyle="bold "?/& gt;
& lt/relative layout & gt;
& lt?xml版本="1.0 "編碼="utf-8 "?& gt
& ltrelative layout xmlns:Android = "/apk/RES/Android "
Android:layout _ width = " match _ parent "
android:layout_height="45dp "
Android:background = " @ drawable/title _ bar " & gt;
& ltImageButton
Android:id = " @+id/id _ title _ left _ BTN "
Android:layout _ width = " wrap _ content "
Android:layout _ height = " wrap _ content "
Android:layout _ center vertical = " true "
android:layout_marginLeft="3dp "
Android:background = " @ drawable/show left _ selector "/& gt;
& lt文本視圖
Android:layout _ width = " fill _ parent "
Android:layout _ height = " fill _ parent "
安卓:重力= "中心"
Android:text= "我不是微信"
android:textColor="#fff "
android:textSize="20sp "
Android:text style = " bold "/& gt;
& lt/relative layout & gt;
標題片段
[java]查看普通副本打印?
包裹?com . zhy . zhy _ fragments;
進口?Android . app . fragment;
進口?Android . OS . bundle;
進口?Android . view . layoutinflater;
進口?Android . view . view;
進口?Android . view . view . onclick listener;
進口?Android . view . view group;
進口?Android . widget . imagebutton;
進口?Android . widget . toast;
公?班級?TitleFragment?延伸?碎片
{
私人?ImageButton?mLeftMenu
@覆蓋
公?觀點?onCreateView(LayoutInflater?充氣機?視圖組?容器,
捆綁?savedInstanceState)
{
觀點?觀點?=?inflater . inflate(r . layout . fragment _ title,?容器,?假);
mLeftMenu?=?(ImageButton)?view . findviewbyid(r . id . id _ title _ left _ BTN);
mLeftMenu.setOnClickListener(新?OnClickListener()
{
@覆蓋
公?作廢?onClick(查看?五)
{
Toast.makeText(getActivity(),
“我?我嗎?安?ImageButton?在?TitleFragment?!?",
吐司。LENGTH_SHORT)。show();
}
});
回歸?查看;
}
}
包com . zhy . zhy _ fragments;
導入Android . app . fragment;
導入Android . OS . bundle;
導入Android . view . layoutinflater;
導入Android . view . view;
導入Android . view . view . onclick listener;
導入Android . view . view group;
導入Android . widget . imagebutton;
導入Android . widget . toast;
公共類TitleFragment擴展片段
{
私有ImageButton mLeftMenu
@覆蓋
公共視圖onCreateView(LayoutInflater inflater,ViewGroup容器,
捆綁包savedInstanceState)
{
view view = inflater . inflate(r . layout . fragment _ title,container,false);
mle ftmenu =(ImageButton)view . findviewbyid(r . id . id _ title _ left _ BTN);
mLeftMenu.setOnClickListener(新OnClickListener()
{
@覆蓋
公共void onClick(視圖v)
{
Toast.makeText(getActivity(),
"我是TitleFragment中的ImageButton!",
吐司。LENGTH_SHORT)。show();
}
});
返回視圖;
}
}
類似地,還有ContentFragment的布局文件:
[html]查看純文本打印?
& lt?xml?version="1.0 "?編碼="utf-8 "?& gt
& ltLinearLayout?xmlns:Android = "/apk/RES/Android "
Android:layout _ width = " match _ parent "
Android:layout _ height = " match _ parent "
android:orientation="vertical "?& gt
& lt文本視圖
Android:layout _ width = " fill _ parent "
Android:layout _ height = " fill _ parent "
安卓:重力= "中心"
Android:text= "使用片段作為主面板"
android:textSize="20sp "
android:textStyle="bold "?/& gt;
& lt/linear layout & gt;
& lt?xml版本="1.0 "編碼="utf-8 "?& gt
& ltlinear layout xmlns:Android = "/apk/RES/Android "
Android:layout _ width = " match _ parent "
Android:layout _ height = " match _ parent "
Android:orientation = " vertical " & gt;
& lt文本視圖
Android:layout _ width = " fill _ parent "
Android:layout _ height = " fill _ parent "
安卓:重力= "中心"
Android:text= "使用片段作為主面板"
android:textSize="20sp "
Android:text style = " bold "/& gt;
& lt/linear layout & gt;
[java]查看普通副本打印?
包裹?com . zhy . zhy _ fragments;
進口?Android . app . fragment;
進口?Android . OS . bundle;
進口?Android . view . layoutinflater;
進口?Android . view . view;
進口?Android . view . view group;
公?班級?ContentFragment?延伸?碎片
{
@覆蓋
公?觀點?onCreateView(LayoutInflater?充氣機?視圖組?容器,
捆綁?savedInstanceState)
{
回歸?inflater . inflate(r . layout . fragment _ content,?容器,?假);
}
}
包com . zhy . zhy _ fragments;
導入Android . app . fragment;
導入Android . OS . bundle;
導入Android . view . layoutinflater;
導入Android . view . view;
導入Android . view . view group;
公共類ContentFragment擴展片段
{
@覆蓋
公共視圖onCreateView(LayoutInflater inflater,ViewGroup容器,
捆綁包savedInstanceState)
{
返回inflater . inflate(r . layout . fragment _ content,container,false);
}
}
主要活動
[java]查看普通副本打印?
包裹?com . zhy . zhy _ fragments;
進口?Android . app . activity;
進口?Android . OS . bundle;
進口?Android . view . window;
公?班級?主要活動?延伸?活動
{
@覆蓋
受保護?作廢?onCreate(捆綁?savedInstanceState)
{
super . oncreate(savedInstanceState);
requestWindowFeature(窗口。特征_編號_標題);
setContentView(r . layout . activity _ main);
}
}
包com . zhy . zhy _ fragments;
導入Android . app . activity;
導入Android . OS . bundle;
導入Android . view . window;
公共類MainActivity擴展Activity
{
@覆蓋
受保護的void onCreate(Bundle saved instancestate)
{
super . oncreate(savedInstanceState);
requestWindowFeature(窗口。特征_編號_標題);
setContentView(r . layout . activity _ main);
}
}
活動的布局文件:
[java]查看普通副本打印?
& ltRelativeLayout?xmlns:Android = "/apk/RES/Android "
xmlns:tools="/tools "
Android:layout _ width = " match _ parent "
Android:layout _ height = " match _ parent "?& gt
& lt碎片
Android:id = " @+id/id _ fragment _ title "
Android:name = " com . zhy . zhy _ fragments。標題片段"
Android:layout _ width = " fill _ parent "
android:layout_height="45dp "?/& gt;
& lt碎片
Android:layout _ below = " @ id/id _ fragment _ title "
Android:id = " @+id/id _ fragment _ content "
Android:name = " com . zhy . zhy _ fragments。內容片段"
Android:layout _ width = " fill _ parent "
Android:layout _ height = " fill _ parent "?/& gt;
& lt/relative layout & gt;