• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    用Android Fragment技術實現(xiàn)多級選項列表

    2015-12-09 20:47:09黃立明江有福陸雅男
    教育教學論壇 2015年15期
    關鍵詞:用戶界面安卓

    黃立明+江有福+陸雅男

    摘要:以傳統(tǒng)的方式實現(xiàn)多級選項列表,不僅構建困難,而且不利于管理,缺乏靈活性,這種情況在Android 3.0引入了Fragment技術之后得到改善。Fragment技術支持更加靈活的UI設計,增強了對平板和手機的兼容性,為多級選項列表的實現(xiàn)提供了一種全新的設計思路。本文完整地介紹Fragment的生命周期,并通過詳細的實例制作過程體現(xiàn)其靈活和便于管理的特性。

    關鍵詞:安卓;碎片;用戶界面;多級選項列表

    中圖分類號:G642 文獻標志碼:A 文章編號:1674-9324(2015)15-0153-04

    0 引言

    Fragment中文意思是碎片,用于在一個Activity中描述部分操作界面和相關的行為。使用Fragment分散整個Activity的布局,體現(xiàn)出了良好的模塊化思維,提高了碎片的重用性。Fragment技術出現(xiàn)之前,多級選項列表的實現(xiàn)方式是先設置布局,再控制各級列表對應視圖的展現(xiàn)或隱藏。這樣做,更多關注的是視圖層次的變化,但是根據線程安全的原則,在子線程中不能直接修改UI界面,難以實現(xiàn)靈活管理。雖然可以使用Handler消息機制解決靈活管理的問題,但是Handler機制比較煩瑣,容易導致代碼臃腫。然而使用Fragment,則不需要親自管理視圖層次的復雜變化,會在程序運行時修改Activity的外觀。所以我們依據Fragment靈活的特性來實現(xiàn)多級選項列表,同時保持了良好的代碼風格。

    圖1是Fragment和Activity生命周期的對比圖。Fragment作為Activity的一部分,擁有一個與其相關的視圖層次結構以及與Activity非常相似的生命周期。

    1 Fragment初始化

    Fragment并非Activity的子類,F(xiàn)ragment直接繼承Object,而Activity直接繼承ContextThemeWrapper。

    2 Fragment的生命周期

    2.1 onAttach()

    當Fragment附加到Activity時,該回調方法會被調用。此方法中可以通過getActivity()方法獲得附加的Activity,將Fragment附加到Activity前,可以使用setArguments()方法附加參數到一個Bundle對象(初始化參數包)。在Fragment的整個生命周期中,初始化參數包都可以用Fragment的getArguments()方法獲得。

    2.2 onCreate()

    此回調發(fā)生在Activity需要獲取Fragment的布局時。如果Fragment是恢復的,則該回調過程中可以獲取傳入的Bundle型對象包savedInstanceState,這個對象包保存了Fragment的上一狀態(tài)數據,也可以在onCreateView()和onActivityCreated()中獲取該對象包。這個過程中應當盡量避免可能阻塞主線程的操作,例如獲取網絡數據,登陸驗證等。

    2.3 onCreateView()

    此回調發(fā)生在Fragment繪制界面并返回一個根視圖時,如果不需要視圖層次,可以返回null。該方法的聲明中包含三個參數,分別是inflater,container,savedInstanceState。inflater參數可以調用inflate()方法動態(tài)加載一個xml布局文件來返回視圖;container參數指定需要插入fragment布局的父容器;savedInstanceState參數不再贅述。

    2.4 onActivityCreated()

    此回調過程發(fā)生在Activity的onCreate()回調之后,可以存在需要依賴于Activity視圖層次的代碼,例如進行一些屬性的設置。

    2.5 其他

    只有當Activity處于resumed狀態(tài)時,F(xiàn)ragment的生命周期才得以獨立運轉,其他它時候是依賴于Activity的生命周期變化的。這種綁定Activity的時期包含了onStart()回調、onResume()回調、onPause()回調以及onStop()回調。因為我們不確定用戶是否還會返回,在onPause()方法中通常做一些數據持久化的工作,再通過onSaveInstanceState()方法保存Fragment的狀態(tài)值。

    3 創(chuàng)建Fragment

    創(chuàng)建Fragment首先需要創(chuàng)建擴展Fragment類的Java類,并重寫其onCreateView()方法,在這個方法中按具體的方式創(chuàng)建碎片。

    3.1 加載布局式

    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){

    View v = inflater.inflate(R.layout.content,null);

    }

    該方式通過LayoutInflater類的對象inflater調用inflate()方法加載xml布局文件來創(chuàng)建Fragment。示例代碼中加載的是content.xml布局文件。

    3.2 Java代碼式

    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){

    //構建Fragment的java代碼

    }

    該方式通過在onCreateView()方法中書寫java代碼來構建Fragment。

    4 顯示Fragment

    在Activity中顯示Fragment主要有兩種方式,分別是靜態(tài)載入xml布局方式和動態(tài)管理方式。第一種方式是對碎片進行布局,盡管這種方式已經夠用,但是為了更好的實現(xiàn)運行時刻與屏幕上的碎片交互,還需引入動態(tài)管理的方式。

    4.1 靜態(tài)載入xml

    該方式是通過在Activity的xml布局文件中定義一個或多個標記,標記中映射了處理該Fragment的類,然后將布局設置為一個Activity類的內容視圖來實現(xiàn)。

    4.2 動態(tài)管理

    該方式需要借助Android系統(tǒng)控制碎片的工具FragmentManager來實現(xiàn)的。需要注意的是,xml布局中使用標記靜態(tài)聲明的視圖容器是不能被替換的。

    實現(xiàn)步驟如下:

    (1)先調用指定類的初始化函數實例化Fragment。

    (2)再使用getFragmentManager()方法獲取FragmentManager,并通過其提供的接口方法beginTransaction()返回一個FragmentTransaction的實例。

    (3)然后設置Fragment的轉場動畫。

    (4)再指定方式(replace、remove、add)和需要替換為碎片的視圖容器(第一個參數)。

    (5)最后提交事務。

    對應代碼如下圖所示。

    5 制作多級選項列表

    使用安卓開發(fā)工具ADT設計應用程序時,首先需要編寫應用程序主界面Activity的xml布局文件,然后其余的工作交由java過程設計代碼來處理。通常編程人員在繼承使用系統(tǒng)類的時候,會依照實際開發(fā)需求擴展需要的功能。此處我們需要擴展使用ListFragment,實現(xiàn)其中的onListItemClick()方法來響應用戶的點擊事件。

    5.1 Activity的xml布局

    5.2 一級列表

    主要代碼如圖3所示。

    代碼分析:

    一級列表類TitleFragment用于顯示一級列表,是以靜態(tài)形式首先被加載,所以不需要初始化,即不需要顯式的構造函數。在Activity調用setContentView()方法設置視圖時,F(xiàn)ragment通過xml文件中〈fragment〉標記映射對應的類。

    第3~10行:在onCreate()方法中準備列表的數據;

    第11~13行:在onCreate()方法中指定適配器;

    第17行:在OnActivityCreated()方法中為列表設置適配器;

    第22行:重寫ListFragment的onListItemClick()方法,其中調用showDetails()方法;

    第27~31行:在showDetails()方法中使用動態(tài)管理的方式顯示二級列表視圖。

    實現(xiàn)效果如圖4所示。

    5.3 二級列表

    5.3.1 主要代碼如圖5所示。

    代碼分析:

    二級列表類DetailFragment1用于顯示二級列表,因為二級列表需要根據一級列表的選中值來動態(tài)選擇該列表所要顯示的內容,所以需要顯式的寫出初始化函數。

    第1~2行:顯式的初始化函數newInstance()中實例化DetailFragment1_triage;

    第3~6行:使用bundle包保存二級列表的狀態(tài),并返回DetailFragment1_triage類的對象df;

    第11~13行:在onCreateView()方法中,為listview設置適配器;

    第14行:給listview設定選擇模式;

    第16行:返回視圖listview;

    第23行:重寫onListItemClick()方法中調用showDetails()方法;

    第26~27行:在showDetails()方法中使用動態(tài)管理的方式顯示三級列表。

    實現(xiàn)效果如圖6所示。

    5.4 三級列表

    三級列表類DetailFragment2的實現(xiàn)和二級列表類DetailFragment1的實現(xiàn)類似。

    6 最終效果

    7 總結

    本文基于對Fragment生命周期的理解,挖掘了Fragment技術的使用范圍,提供了一種新的基于Fragment技術實現(xiàn)多級選項列表的方法。

    基于Fragment技術的應用程序設計體現(xiàn)了如下的幾大特性。

    (1)對Android手機和平板有良好的兼容性。

    (2)Fragment對應用程序框架構建的支持,淘汰了陳舊的TabActivity和ActivityGroup。

    (3)Fragment分散Activity的特性大大提升Fragment代碼的重用性。

    參考文獻:

    [1]王云林.Android應用中跨版本集成新特性的研究與實現(xiàn)[D].上海:東華大學計算機系,2013.

    [2]史書明.Android應用中消息傳遞方法分析[J].電腦知識與技術,2014,10(13):2984-2986.

    [3]李剛.瘋狂Android講義[M].北京:電子工業(yè)出版社,2013.

    [4]王濤.安卓系統(tǒng)消息傳遞方法研究[J].安陽工學院學報,2014,13(4):61-63.

    [5]Chris Haseman.Android應用開發(fā)[M].北京:人民郵電出版社,2013:172-178.

    猜你喜歡
    用戶界面安卓
    自然用戶界面在智能家居系統(tǒng)中的應用路徑創(chuàng)新研究:生成式人工智能技術的調節(jié)作用
    包裝工程(2023年16期)2023-08-25 11:40:58
    iPhone不卡的秘密曝光:安卓也能享受
    消費電子(2022年6期)2022-08-25 09:44:40
    基于CiteSpace的國外用戶界面體驗圖譜量化分析
    MIPS安卓平臺上ARM二進制翻譯系統(tǒng)
    高技術通訊(2021年1期)2021-03-29 02:29:28
    文物表情包
    物聯(lián)網用戶界面如何工作
    UI用戶界面色彩設計研究
    流行色(2017年12期)2017-10-26 03:08:44
    一種基于安卓系統(tǒng)的手機側抓包分析方法
    基于B/S的跨平臺用戶界面可配置算法研究
    安卓L未至安卓M來了!安卓首泄漏M系統(tǒng)
    塘沽区| 尼勒克县| 曲沃县| 将乐县| 西峡县| 建湖县| 平安县| 平山县| 寿宁县| 思南县| 全州县| 横山县| 宁海县| 仪陇县| 阳曲县| 内乡县| 宁晋县| 永嘉县| 广平县| 乌拉特中旗| 江孜县| 平谷区| 漳州市| 大埔县| 邹平县| 衢州市| 五河县| 仲巴县| 乌恰县| 女性| 平谷区| 诸暨市| 东莞市| 河津市| 莎车县| 抚松县| 南开区| 尚义县| 南通市| 抚松县| 察哈|