亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android的手機(jī)平板碎片的研究

        2018-11-02 03:18:16
        關(guān)鍵詞:程序運(yùn)行代碼布局

        瞿 蘇

        (江蘇旅游職業(yè)學(xué)院, 江蘇 揚(yáng)州 225000)

        一、碎片的概念

        程序在手機(jī)和平板都能運(yùn)行,是開發(fā)人員必需實(shí)現(xiàn)的技術(shù)。同時(shí),界面也能正常地展示,Android 3.0版本以上,引入了碎片(Fragment)的概念,碎片是能夠讓程序更加合理和充分地利用大屏幕的空間。

        二、碎片的使用方式

        碎片通常都是在平板開發(fā)中使用的,首先要做的就是創(chuàng)建一個(gè)平板模擬器,創(chuàng)建完成后啟動(dòng)平板模擬器。

        (一)碎片的簡(jiǎn)單用法

        在一個(gè)活動(dòng)當(dāng)中添加兩個(gè)碎片,并讓這兩個(gè)碎片平分活動(dòng)空間。這個(gè)布局非常簡(jiǎn)單,只放置了一個(gè)按鈕,并讓它水平居中顯示。左右兩側(cè)碎片布局分別為 left-fragment.xml和 right-fragment.xml??梢允褂?fragment>標(biāo)簽在布局中添加碎片,碎片的類名通過android:name屬性加上,并加上包名。兩個(gè)碎片平分了整個(gè)活動(dòng)的布局,在真正的項(xiàng)目中很難有什么實(shí)際的作用。

        (二)動(dòng)態(tài)添加碎片

        設(shè)計(jì)程序時(shí),分別新建another_left-fragment.xml和another_right-fragment.xml。通過碎片動(dòng)態(tài)地添加活動(dòng)中,可以將程序界面更加多樣。在MainActivity中,向FrameLayout添加內(nèi)容,以此實(shí)現(xiàn)動(dòng)態(tài)添加碎片的功能。代碼如圖1所示:

        圖1 動(dòng)態(tài)添加碎片代碼

        結(jié)合replaceFragment()方法中的代碼可以看出,動(dòng)態(tài)添加碎片主要分為5步,分別是:創(chuàng)建碎片實(shí)例;獲取 FragmentManager,調(diào)用 getSupportFragment Manager()方法;開啟一個(gè)事務(wù),調(diào)用 beginTransaction()方法;replace()方法,向容器內(nèi)添加或替換碎片;提交事務(wù),調(diào)用 commit()方法。

        (三)在碎片中模擬返回棧

        FragmentTransaction 中調(diào)用 addToBackStack()方法,可以將事務(wù)添加到返回棧中。相關(guān)代碼如圖2所示:

        圖2 添加事務(wù)到返回棧

        (四)碎片和活動(dòng)之間進(jìn)行通信

        碎片和活動(dòng)之間的通信,F(xiàn)ragmentManager提供了findFragmentById()的方法,可以從布局文件中獲取碎片,代碼為:RightFragment rightFragment=(RightFragment) getSupportfragmentManager ().findFragmentById(R.id.right_fragment);

        獲取碎片后,然后在每個(gè)碎片中可以調(diào)用getActivity()方法來得到和當(dāng)前碎片相關(guān)聯(lián)的活動(dòng)實(shí)例,代碼為:MainActivity activity= (MainActivity)getActivity ();也可以通過 getActivity ()方法獲取Context對(duì)象。同樣,碎片與碎片之間的通信,可以在碎片中獲取與碎片相關(guān)聯(lián)的活動(dòng),再通過活動(dòng)獲取另外一個(gè)碎片的實(shí)例。

        (五)碎片的生命周期

        碎片和活動(dòng)一樣,也有自己的生命周期,碎片的生命周期,如表1所示。

        表1 碎片的生命周期

        在使用碎片時(shí),會(huì)遇到當(dāng)系統(tǒng)內(nèi)存不足時(shí),進(jìn)入停止?fàn)顟B(tài)的碎片,有可能被回收。所以可以通過調(diào)用onSaveInstanceState()方法保存數(shù)據(jù),保存的數(shù)據(jù)可以通過3個(gè)方法獲取,3個(gè)方法分別是onCreate().onCreateView()和 onActivityCreated()。

        三、動(dòng)態(tài)加載布局的技巧

        在程序設(shè)計(jì)時(shí),在布局文件中通過可以添加碎片和替換碎片,解決了一些問題。但在程序運(yùn)行時(shí),是否可以通過判斷設(shè)備的分辨率或設(shè)備屏幕的寬度來決定加載哪個(gè)布局呢?答案是肯定的!Android中,程序運(yùn)行時(shí)動(dòng)態(tài)加載布局有幾個(gè)技巧。

        (一)使用限定符

        平板電腦的屏幕寬度足夠大,程序運(yùn)行時(shí),頁面顯示都是采用雙頁模式,包含子項(xiàng)列表顯示在左側(cè)面板上,列表所選中子項(xiàng)的內(nèi)容則顯示在右側(cè)列表中。但是當(dāng)使用手機(jī)時(shí),程序運(yùn)行,有兩個(gè)頁面時(shí),程序運(yùn)行時(shí),怎么判斷是單頁模式還是雙頁模式呢。此時(shí)就需要使用限定符(Qualifiers)來完成了。

        圖3代碼是使用限定符的例子,是activity main.xml布局文件代碼,該布局文件只有左側(cè)碎片文件并且該左側(cè)碎片文件充滿整個(gè)父布局文件,即單頁模式。

        圖3 activity-main.xml布局文件代碼

        圖4代碼是activiy_main.xml布局文件修改后的代碼,activiy_main.xml是 res目錄下新建的layout-large文件夾中的布局文件。該布局文件中,包含2個(gè)碎片文件,分別是left_fragment和right_fragment,即雙頁模式。

        圖4 修改后的activity-main.xml文件代碼

        圖4布局文件是基于圖3布局文件的改進(jìn),其中l(wèi)arge就是一個(gè)限定符,大屏幕設(shè)備會(huì)自動(dòng)加載layout-large文件夾中的布局(圖4布局文件),而小屏幕設(shè)備則加載layout文件中的布局(圖3布局文件)。接著可以將 MainActivity 中 replaceFragment()方法里的代碼注釋掉,并在平板模擬器上重新運(yùn)行程序。再啟動(dòng)一個(gè)手機(jī)模擬器,并在這個(gè)模擬器上重新運(yùn)行程序,這樣就實(shí)現(xiàn)了在程序運(yùn)行時(shí)動(dòng)態(tài)加載布局的功能。

        (二)使用最小寬度限定符

        通過以上表述,large限定符可以判斷單頁或雙頁的問題。但是很多學(xué)習(xí)者會(huì)提出這樣的問題:其中的large值怎么確定?多大的值呢?有具體的范圍嗎?不同的設(shè)備加載布局時(shí),都可以通過使用最小寬度限定符(Smallest-widthQualifier)來設(shè)定屏幕寬度,最小寬度限定符指地是屏幕寬度的最小值(單位dp),是設(shè)備是否加載布局的臨界點(diǎn),當(dāng)屏幕寬度大于臨界點(diǎn)時(shí),就加載一個(gè)布局;當(dāng)屏幕寬度小于臨界點(diǎn)時(shí),就加載另一個(gè)布局。比如最小寬度限定符為600dp時(shí),當(dāng)程序運(yùn)行時(shí),如果設(shè)備屏幕寬度大于600dp時(shí),程序會(huì)自動(dòng)加載新建的布局;如果設(shè)備屏幕寬度小于600dp時(shí),程序仍然加載原來默認(rèn)的布局。

        四、碎片實(shí)踐應(yīng)用

        使用碎片的最典型實(shí)例是新聞應(yīng)用,新聞?dòng)⒄Z等等,設(shè)計(jì)的目的就是要求同時(shí)兼容手機(jī)和平板電腦。

        對(duì)于新聞應(yīng)用程序,目錄結(jié)構(gòu)如圖5所示。

        圖5 新聞應(yīng)用程序目錄結(jié)構(gòu)

        首先新建類News,新建作為新聞內(nèi)容的布局文件news_content_fr-ag.xml,并創(chuàng)建繼承自Fragment的NewsContent-Fragment類。

        新聞應(yīng)用程序設(shè)計(jì)中,layout-sw600dp文件夾下,創(chuàng)建activity.xml布局文件,該布局文件中,引入了兩個(gè)碎片,值得一提地是,activity.xml布局文件的id是news_content_layout。程序運(yùn)行時(shí),如果找到id,則是雙頁模式;找不到id,則是單頁模式。接著在NewsTitleFragment中新建RecyclerView內(nèi)部類NewsAdapter的適配器。其中,判斷單雙頁模式的代碼如下圖6所示。

        圖6 判斷單雙反模式的代碼

        RecyclerView內(nèi)部類可以是直接訪問NewsTitleFragment,比如 isTwoPane,以此判斷單頁模式還是雙頁模式。最后再在RecyclerView中填充數(shù)據(jù),以便雙頁模式時(shí),右側(cè)新聞內(nèi)容里的碎片數(shù)據(jù)。

        五、總結(jié)

        本文主要介紹了碎片的基本概念以及使用場(chǎng)景,碎片的常見用法、碎片生命周期的相關(guān)內(nèi)容以及動(dòng)態(tài)加載布局的技巧,以及碎片的實(shí)踐應(yīng)用。

        猜你喜歡
        程序運(yùn)行代碼布局
        行政公益訴訟訴前程序運(yùn)行檢視
        法大研究生(2020年2期)2020-01-19 01:43:04
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        BP的可再生能源布局
        能源(2017年5期)2017-07-06 09:25:57
        VR布局
        2015 我們這樣布局在探索中尋找突破
        論刑事錯(cuò)案的成因
        Face++:布局刷臉生態(tài)
        中文字幕亚洲欧美日韩在线不卡| 精品人妻少妇av中文字幕| 国产精品人人做人人爽| 午夜亚洲av永久无码精品| 国产精品久久久久…| 黄色三级国产在线观看| 99人中文字幕亚洲区三| 免费人成网ww555kkk在线| 国产99在线视频| 亚洲中文有码一区二区| 国产三级视频不卡在线观看| 国产成人久久精品一区二区三区| 中文字幕欧美一区| 在线亚洲精品国产成人二区| 少妇爽到高潮免费视频| 真实国产老熟女无套中出| 欧美末成年videos在线观看| 国产三级黄色的在线观看| 亚洲精品久久视频网站| 亚洲精品久久区二区三区蜜桃臀 | 亚洲啪啪综合av一区| 日本道免费精品一区二区| 亚洲av资源网站手机在线| 成品人视频ww入口| 久久久久亚洲av无码a片软件| 亚洲无码vr| 少妇太爽了在线观看免费| 国产乱人激情h在线观看| 在线免费日韩| 国产青春草在线观看视频| 日本不卡高字幕在线2019| 中国a级毛片免费观看| 韩日无码不卡| 色和尚色视频在线看网站| 日本亚洲欧美色视频在线播放| 亚洲国产一区二区三区网| 中国av一区二区三区四区| 肥老熟妇伦子伦456视频| vr成人片在线播放网站| 日本高清视频在线一区二区三区 | 99久久夜色精品国产网站|