當前位置:編程學習大全網 - 源碼下載 - 如何使用安卓碎片多窗口

如何使用安卓碎片多窗口

碎片的產生和引入

碎片的例子請參考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;

  • 上一篇:源編程教育
  • 下一篇:輔助的四種分類,“法輔”都是萬金油,誰說輔助不能C?
  • copyright 2024編程學習大全網