1. 程式人生 > >Fragment(碎片)-------讓介面在平板上一樣炫麗美觀

Fragment(碎片)-------讓介面在平板上一樣炫麗美觀

一、碎片概述:

Android上的介面展示都是通過Activity實現的,Activity實在是太常用了,但是Activity也有它的侷限性,同樣的介面在手機上顯示可能很好看,在平板上就未必了,因為平板的螢幕非常大,手機的介面放在平板上可能會有過分被拉長、控制元件間距過大等情況。這個時候更好的體驗效果是在Activity中嵌入”小Activity”,然後每個”小Activity”又可以擁有自己的佈局。因此,我們今天的主角Fragment登場了。它不需要在menifest中配置。
首先需要注意,Fragment是在3.0版本引入的,如果你使用的是3.0之前的系統,需要先匯入android-support-v4的jar包才能使用Fragment功能。

二、碎片的使用方法:

1.簡單方法:(看參考)

過程:
1>新建兩個左右側的佈局
2>新建兩個Fragment類,新增這兩個佈局(繼承Fragment類,重寫onCreatView()方法)
3>在main.xml中新增兩個Fragment佈局(name寫成完整的類名)

2.動態新增碎片:(看參考)

例:

getFragmentManager().beginTransaction().replace(R.id.main_layout, fragment1).commit();  

分為5步:
1.獲取到FragmentManager,在Activity中可以直接通過getFragmentManager得到。

2.開啟一個事務,通過呼叫beginTransaction方法開啟。

3.向容器內加入Fragment,一般使用replace方法實現,需要傳入容器的id和Fragment的例項。

4.提交事務,呼叫commit方法提交。

3、在碎片中模擬返回棧

1)我們發現向活動中動態新增碎片後,通過點選按鈕添加了一個碎片之後,按下Back鍵程式就會直接退出,這裡模仿類似於返回棧的效果,按下Back鍵可以回到上一個碎片。

2)做法很簡單:

FragmentTransaction提供了一個addToBackStack()方法,可以將一個事務新增到返回棧中,
方法:

FragmentTransaction transaction = getFragmentManager().beginTransaction
().replace(R.id.main_layout, fragment1); transaction.addToBackStack(null); transaction.commit();

在提交前,呼叫了addToBackStack()方法,可以接收一個名字用於描述返回棧的狀態,一般傳入null即可。

4.碎片和活動 以及 碎片和碎片之間的通訊:

1)碎片和活動之間的通訊:

1>活動中呼叫碎片
FragmentManager提供的一個類似於findViewById()的方法,程式碼如下:

RightFragment fragment = (RightFragment )getFragmentManager().findFragmentById(R.id.right_fragment);

活動使用到fragment中元件

在fragment中建立一個update方法,在主活動中呼叫其方法即可。

2>碎片中呼叫活動;

MainActivity activity = (MainActivity)getActivity;

2)碎片之間的通訊:

例如:

TextView textView = (TextView) getActivity().findViewById(R.id.fragment1_text);  

三、碎片的生命週期:

  • onAttach方法:Fragment和Activity建立關聯的時候呼叫。
  • onCreateView方法:為Fragment載入佈局時呼叫。
  • onActivityCreated方法:當Activity中的onCreate方法執行完後呼叫。
  • onDestroyView方法:Fragment中的佈局被移除時呼叫。

四、動態載入佈局的技巧:

1.使用限定符:

1)概述:
設想如果程式能夠根據裝置的解析度或螢幕大小的執行時來決定載入哪個佈局,那我們可發揮的空間就更多了。
2)方法:
在res下,新建一個layout-large的資料夾,其中存放佈局檔名稱和layout中的一致,那麼large就是一個限定符,螢幕被認為是large的裝置會自動載入layout-large資料夾下的佈局,而小螢幕的裝置還是會載入layout資料夾下的佈局。
3)限定符還有其他:
android中常見的限定符

大小:
small:提供給小螢幕裝置的資源
normal:提供給中等螢幕裝置的資源
large:提供給大螢幕裝置的資源
xlarge:提供給超大螢幕裝置的資源
解析度:
ldpi:提供給低解析度裝置的資料(120dpi以下)
mdpi:提供給中等解析度裝置的資源(120dpi到160dpi)
hdpi:提供給高解析度裝置的資源(160dpi到240dpi)
xhdpi:提供給高解析度裝置的資源(240dpi到320dpi)
方向:
land:提供給橫屏裝置的資源
port:提供給豎屏裝置的資源

3.最小寬度限定符

1>最小寬度限定符允許我們對螢幕的寬度指定一個最小值(以dp為單位),然後以這個最小值為臨界點,螢幕寬度大於這個值的裝置就載入這個佈局,螢幕寬度小於這個值的裝置就載入另一個佈局。
2>例如:
這裡寫圖片描述
3>注意:最小寬度限定符是在android3.2版本引入的,由於我使用的好似最低相容系統版本4.0,所以可以放心地使用它。

五、補充:

1)相容版本,可能需要改manifest中的支援的最小版本。
當fragment建立時,呼叫onCreatView()方法。返回當前fragment顯示的view佈局。
2)判斷手機橫豎屏:
這裡寫圖片描述
3)建議使用v4包下的類,這樣在低版本的android版本中都可以正常使用。

相關推薦

Fragment(碎片)-------介面平板一樣美觀

一、碎片概述: Android上的介面展示都是通過Activity實現的,Activity實在是太常用了,但是Activity也有它的侷限性,同樣的介面在手機上顯示可能很好看,在平板上就未必了,因為平板的螢幕非常大,手機的介面放在平板上可能會有過

Visual Studio Code 內建終端的shell和字型設定,它和iTerm2一樣

在我前面的一片博文中,說明了如何打造iTerm2: 預設終端 + iTerm2 + oh_my_zsh + agnoster theme + Powerline fonts + solarized 打造macOS炫酷終端 Visual Studio Code內建的終端,也可以設定成這

Android Fragment碎片-片段(不同佈局,仿手機設定介面

package com.example.android_11; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends App

Spring Mvc Controller類的方法的@RequestMapping寫在介面方法,然後Controller實現哪個方法,@RequestMapping一樣會生效

不僅僅是@RequestMapping註解,類似於@Autowired之類的註解都是如此,在也會生效。 spring mvc是通過反射獲得父介面得到的相應的註解資訊。 估計這麼做的原因是為了彌補java本身註解只能在類上並且標註了@Inherited才能被繼承的缺陷。。。spring mvc

C#如何介面或者控制元件響應鍵盤的按鍵

在VS中的介面的屬性中有KeyPreview這一屬性(控制元件沒找到這一個屬性,應該是沒有),需要將它的值設為true。 在控制元件或者介面的事件中找到KeyUp,KeyDown,KeyPress等事件,雙擊生成框架程式碼, private void FrmVideoC_KeyD

三:在線工具網站,你PC要裝的軟件少一半!

一半 開始 高效 美工 添加 之間 lar photo hellip 記住這幾個在線工具網站,讓你PC上要裝的軟件少一半! 一、uzer.me——豐富的雲端應用聚合 這個雲平臺將我們常用的Office系列軟件、Adobe家族的系列軟件&h

機器像人類一樣多模態交互,會是物聯網的勝負手嗎?

物聯網 多模態 技術這個事情,很多時候不是一蹴而就的。更多時候,是大家先看到了一個東西非常美好,結果左發展右發展也發展不起來,在吃瓜群眾們興奮地送上一首《涼涼》之後,搞不好哪天卻突然一個勝負手拋出來,一切又都不一樣了。曾經的移動通訊、觸屏交互莫不如是,今天的3D打印、VR說不定也在重復這個套路。更明顯

linux操作mysql命令快速手記——手指跟思考的速度(二)

mct spa sql命令 start mys 幹貨 demon 快速 直接 這一篇是《mysql內建命令快速手記》的姐妹篇,廢話不再贅述,直接上幹貨,跟老鐵慢慢品 1、mysql -hlocalhost -uroot -proot,-h,-u,-p分別代表ip,usern

linux命令快速手記 — 手指跟思考的速度(四)

lin 都是 nbsp 管道 tar dem redis安裝 emc tomcat pm2 list:列出pm2方式啟動的所有程序 pm2 monit:顯示每個應用程序的CPU和內存占用情況 scp:遠程復制和本地上傳,適用於本地ssh登錄到遠程服務器   scp root

orangepi 用Btsync(資源分享工具)好資源不怕和諧!

自從有了小橘子派,就想著如何解放我的膝上型電腦,有些事情讓小橘子做,省電!很多人都發現了,放在百度網盤的小電影都變成8秒短片了,呵呵。。。然後,催生了我們的新式分享工具----BitTorrent Sync來個GetNAS中文網的介紹 BitTorrent Sync 是免費跨平

NBA史酷的紫色球衣誕生 湖人都被比下去

@央廣軍事11月10日訊息,2018中國航展上首次公開展出的“瞭望者Ⅱ”察打一體導彈無人艇,是剛剛成功進行首發導彈飛行試驗命中靶心的實艇,試驗成功後隨即吊裝到展位與公眾見面。據媒體此前報道,該艇是中國第一艘導彈無人艇,也是繼以色列拉斐爾海上騎士後全球第二個成功發射導彈的無人艇,填補了國內導彈無人艇這一技術空白

Phoenix=HBase+SQL HBase插了翅膀

本期分享專家:張贇—阿里多模型資料庫專家 本期分享主題:Phoenix 基本介紹及二級索引 視訊地址:https://yunqivedio.alicdn.com/od/pnb7E1543455829418.mp4 PPT地址:https://yq.aliyun.com/download/3111

Java檔案傳:Restful介面接收傳檔案,快取在本地

介面程式碼 import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.Requ

如何使用elementUI呼叫一次介面同時傳圖片和檔案,同時需要攜帶其他引數,實現呼叫後端介面

今天有一個坑,同時要上傳圖片和檔案,而且圖片要展示縮圖,檔案要展示列表。 我的思路是: 首先,只上傳附件照片,這個直接看ele的官方例子就行,不僅僅上傳附件照片,還同時上傳其他引數。 然後,再做上傳照片和檔案,上傳其他引數,其實也就是檔案合併。   一、上傳照片和其他引

window系統電腦或平板的electron靜默列印, 2018年10月更新

最近有個需求,在window平板上實現列印,使用者在平板上一頓操作之後,生成一個組合的頁面,並將頁面上的內容列印到紙張上帶走。 首先需要在main.js裡面新增如下程式碼,在主程序中,偵聽渲染程序的列

介面方法的註解無法被@Aspect宣告的切面攔截的原因分析

今天專案遇到大坑,以前做多資料來源springboot都是用的2.0.1版本,這一次專案組用的腳手架採用1.0.5搭建,拷貝以前的多資料來源配置發現mapper介面的註解進不了aop,原來是版本問題 h

Activity與Fragment通訊 多介面實現優化

1.問題 我們都知道Activity與Fragment通訊的幾種方式,推崇的應該是谷歌給出的介面方案。 地址:https://developer.android.com/training/basics/fragments/communicating.html#DefineInterface

el-upload控制元件一次介面請求傳多個檔案

el-upload元件預設情況下上傳多少個檔案就會請求多少次上傳介面,如何一次上傳多個檔案而不必多次請求上傳介面呢?直接看程式碼 html <el-upload :action="actionUrl" :auto-upload="false" :multiple="true" :file-list=

.NET Core微服務之路:我們對一個Demo通訊進行修改,完成RPC通訊

 最近一段時間有些事情耽擱了更新,抱歉各位了。   上一篇我們簡單的介紹了DotNetty通訊框架,並簡單的介紹了基於DotNetty實現了迴路(Echo)通訊過程。   我們來回憶一下上一個專案的整個流程: 當服務端啟動後,繫結並監聽(READ)設定的埠,比如1889。

Android Fragment碎片

硬件 容易 分享圖片 技術 -a 調用 實戰 ron 顯示 (孤山不見蓬萊客,點點星雲落九洲) 什麽是碎片?   碎片(Fragment)是一種可以嵌入在活動當中的UI片段,它能讓程序更加合理和充分地利用大屏幕的空間,因而在平板上應用的非常廣泛。可以把Fragment