① android一個頁面可以有幾種布局方法嗎
Android界面五種常用布局方式
Android的界面由布局和組件協同完成,布局相當於整體框架,而組件則是框架裡面的內容。組件按布局方式一次排列,就組成了用戶所能看見的界面。Android的五大布局分別是LinearLayout(線性布局)、FrameLayout(單幀布局)、RelativeLayout(相對布局)、AbsoluteLayout(絕對布局)、TableLayout(表格布局)。
LinearLatout按照垂直或水平的順序依次排列子元素,每一個子元素都位於前一個元素之後。如果是垂直排列,那麼將是一個N行單列的結構,每行只會有一個元素,而不論這個元素的寬度是多少;如果是水平排列,那麼將是一個單行N列的結構。如果搭建兩行兩列的結構,通常是先垂直排列兩個元素,每個元素里再包含一個LinearLayout進行水平排列。
FrameLayout是五大布局中最簡單的一種布局,在這個布局中,整個界面被當成一塊備用的空白區域,所有的子元素都不能被指定放置的位置,它們統統放於這塊區域的左上角,並且後面的元素直接覆蓋在前面的子元素之上,將前面的子元素部分或全部遮擋。
AbsoluteLayout是絕對布局。在此布局中的子元素android:layout_x和android:layout_y屬性將生效,用於描述該子元素的坐標位置。屏幕上左上角為坐標原點(0,0),第一個0代表橫坐標,向右移動此值增大,第二個代表縱坐標,向下移動此值增大,在此布局中的子元素可以相互重疊。在四級開發中,通常不採用此布局方式,因為它的界面代碼過於剛性,以至於不能很好的適配各種終端。
RelativeLayout按照各子元素之間的位置關系完成布局。在此布局中的子元素里與位置相關的屬性將會生效。例如android:layout_below,android:layout_above等。子元素就通過這些屬性和個自的ID配合指定位置關系。注意在指定位置關系時,引用的ID必須在引用前被定義,否則將出現異常。RelativeLayout是Android五大布局中較為靈活的一種布局方式,比較適合一些復雜的界面布局。
TableRow(表格布局)是LinearLayout的子類,它的Android:Layout_width和Layout_height屬性恆為MATCH_PARENT和WRAP_CONTENT。所以它的子元素都是橫向排列,並且寬高一致。這樣的設計使得每個tablerow里的子元素都都相當於表格中的單元格一樣。在TableRow中,單元格可以為空,但是不能跨列。
② android手機通訊錄頁面布局怎麼做
基於android的通訊錄的設計與實現
一:引言
學了android的開發與設計課後,對計算機軟硬體相關知識有了一定的了解;基於此,設計與實現一個在Android系統上運行的手機通訊管理軟體,實現手機通訊錄的基本功能,包括:添加聯系人、查看聯系人、修改聯系人、刪除聯系人、撥打電話、發送簡訊、查詢聯系人,以及聯系人的導入導出功能即聯系人的備份。
主要開發基於Android
的手機的通訊管理軟體。以java語言為基礎,結合Android移動開發平台,並利用Android提供的SDK,實現在Android平台上運行的手機通訊錄,方便廣大手機用戶更加便捷地對聯系人的信息進行管理。該手機通訊錄面向所有的Android手機用戶,為他們提供更實際便捷的手機服務,具有撥號、通訊記錄等基本功能。該通訊錄的數據導出功能是該軟體的一個特色,可以實現聯系人數據導出到文本,實現數據備份。大家生活當中經常遇到手機丟失,出現故障,和其他一些事故。最擔心的就是丟失手機里的電話號碼。
1.1. 選題目的及意義
隨著3G網路的使用,移動終端不再僅是通訊網路的終端,還將成為互聯網的終端。因此,移動終端的應用軟體和需要的服務將會有很大的發展空間。在Google和Android手機聯盟的共同推動下,Android在眾多手機操作系統中脫穎而出,受到廣大消費者的歡迎。
手機通訊錄作為手機的基本功能之一,每天我們都在頻繁地使用著。根據手機功能使用調查顯示,有八成以上的消費者使用手機通訊錄功能。隨著手機通訊錄功能的不斷加強與完善,手機通訊錄對於人們的意義,已不僅僅像記事簿一樣顯示通訊地址,而是向著個性化、人性化的方向發展。通訊錄從無到有,從英文到中文,經過了十幾年的發展歷程,今後的發展趨勢就是從通訊錄發展為名片夾,也就是在一個人名下,可以存儲座機、手機、單位、地
址、電子郵件等內容。這種名片夾在電話薄的基礎上,大大豐富了內容,同時結構也發生了革命性變化,而且隨著手機的發展,相信更優秀的通訊錄會越來越受到社會各層人士的喜愛。
1.2. 項目背景
Android一詞的本義指"機器人",同時也是Google在2007年11月5日宣布的基於Linux內核的開源手機系統的名稱,中文注冊商標"安致",
該平台由操作系統、中間件、用戶界面和應用軟體組成,是一個為移動終端打造的真正開放和完整的智能手機系統。其早期為Google開發,後由開放手機聯盟( Open
Handset Alliance)開發。它採用了軟體堆層(software
stack,又名以軟體疊層)的架構,主要分為三部分,底層以Linux內核為基礎,由C語言開發,只提供基本功能;中間層包括資料庫Library和虛擬機Virtual
Machine,由C++開發;最上層是由各公司自行開發,以Java編寫的各種應用軟體,如通話程序,簡訊程序等。 二:功能需求。
根據用戶需求總結出來的反映了用戶需求的系統邏輯模型轉換成可以實施的物理模型,把整個設計劃分成單元,主要解決如何去做的問題,要想創建整個通訊錄首先要通過增加聯系人信息來創建通訊錄。整個應用程序應劃分為4個模塊,分別是程序啟動、用戶界面、後台服務和資料庫適配器,各模塊之間的關系如圖所示:
從上圖中不難看出,後台服務是整個應用程序的核心,主要是「數據獲取模塊」,負責周期性
的從用戶輸入的內容中獲取信息。
後台服務在程序啟動時就由AppWidgetProvider啟動,也可由用戶界面通過startService(進行啟動,啟動後的後台服務將一直保持運行狀態。同時用戶界面從數據獲文本信息。一方面可以避免因網路通信不暢造成界面失去響應;另一方面,後台服務可以及時更新數據,以保證數據的准確性。資料庫適配器封裝了所有對SQLite資料庫操作的方法用戶界面和後台服務會調用它來實現資料庫操作。在完成用戶界面設計、資料庫設計和模塊設計後,至此程序設計階段基本完成。文本編輯器中不同功能界面之間的切換,用戶可以通過點擊menu鍵來切換到不同的功能界面,不同功能界面的切換如圖
三:設計思路。
開發的基於Android手機通訊錄具有十分重要的意義。可以根據客戶需求的實際情況,開發一款實用的手機通訊錄軟體。
本設計主要是採用Android的View框架編寫,部分框架運用Android中的其他組件。
當進入通訊錄的增加界面時,調用的是一個用相對布局RelativeLayout的XML布局文件。其中包括了2個Button,分別實現了不同的功能。
第一個Button是保存內容,當輸入聯系人姓名和號碼是點擊保存實現此功能。說到保存,不得不說得是保存信息涉及添加新聯系人的頭像,姓名,手機號碼,辦公室電話,家庭電話,職務職稱,單位名稱,地址,郵政編碼,Email,其他聯系方式,備注這些信息。
第二個Button是返回,顧名思義就是從增加界面返回前一界面。
響應menu鍵的觸發事件,設置底部菜單是否可見,並通過對底部菜單選項的監聽實現底部菜單中的增加、查找、刪除、菜單、退出等功能,其中菜單包括顯示所有、刪除所有、號碼備份功能。
在聯系人信息界面時通過點擊menu鍵,會彈出通信功能框,通過與發信息、打電話、發郵件功能介面的套用來實現。
四:流程圖
一個好的系統設計的步驟決定了程序是否能按照設計者的目的按時完成,是否能在規定的時間內按照設計者的要求高質量的完成程序必要的功能。並且按照標準的設計步驟對程序進行調試,測試,以及後期的優化完善,使程序更加具有健壯性和可用性。通過對通訊錄功能、系統模塊、用戶需求方面進行全方位的分析制定開發流程,開發流程如圖4-1所示。
圖4-1開發流程圖
採用標準的開發流程確定系統具有用戶管理功能,聯系人增刪改功能,通訊功能,查找功能,備份等功能。系統的功能圖如4-2所示。
圖4-2 系統功能圖
通過對系統的功能結構的分析,設計後系統運行流程是系統運行後用戶將進入通訊錄主界面,可以看到聯系人列表。通過點擊MENU界面的增加功能選項可以新增聯系人
③ android中常見的五種布局有什麼特點
1,FrameLayout,特點:所有的View都會放在左上角,並且後添加進去的View會覆蓋之前放進去的View。
2,LinearLayout,特點:在水平或者垂直方向上依次按照順序來排列子元素,控制項的排列順序遵循其在布局文件中被寫出的先後順序。
3,RelativeLayout,特點:以某一個子元素為參照物,其餘子元素均按照其相對位置來完成布局。
4,TableLayout,特點:每個TableLayout都是由一個或多個TableRow組成的,一個TableRow就代表TableLayout的一行。
5,AbsoluteLayout,表格布局類似Html裡面的Table。每一個TableLayout裡面有表格行TableRow,TableRow裡面可以具體定義每一個元素,設定他的對齊方式 android:gravity="" 。
(3)android撥號界面布局擴展閱讀:
開放性:
在優勢方面,Android平台首先就是其開放性,開發的平台允許任何移動終端廠商加入到Android聯盟中來。顯著的開放性可以使其擁有更多的開發者,隨著用戶和應用的日益豐富,一個嶄新的平台也將很快走向成熟。
開放性對於Android的發展而言,有利於積累人氣,這里的人氣包括消費者和廠商,而對於消費者來講,最大的受益正是豐富的軟體資源。開放的平台也會帶來更大競爭,如此一來,消費者將可以用更低的價位購得心儀的手機。
豐富的硬體:
這一點還是與Android平台的開放性相關,由於Android的開放性,眾多的廠商會推出千奇百怪,功能特色各具的多種產品。功能上的差異和特色,卻不會影響到數據同步、甚至軟體的兼容,如同從諾基亞Symbian風格手機一下改用蘋果iPhone,同時還可將Symbian中優秀的軟體帶到iPhone上使用、聯系人等資料更是可以方便地轉移。
④ 關於Android布局你不知道的
Android常見的5個布局,我想大家一定不會陌生。LinearLayout、RelativeLayout和FrameLayout也是使用頻率較高的布局方式,做Android開發的一定使用過。
傳統的5種布局方式:
不過我的問題並不是問面試者如何使用這些基礎的布局,而是要看面試者怎麼解決布局嵌套(影響性能)和屏幕適配問題。
我們都清楚Android界面的布局太復雜,嵌套層次過深,會使整個界面的測量、布局和繪制變得更復雜,對性能會造成影響。所以我們在寫Layout文件時,也要盡量避免布局的嵌套層次過深的問題。
在怎麼解決問題之前,我們得有一個好方法先判斷當前的問題情況。Android SDK工具箱中有一個叫做Hierarchy Viewer的工具,能夠在App運行時分析Layout。
注意: 在ROOT的手機,或者是安裝開發版的ROM的手機可以直接使用Hierarchy Viewer。如果沒有Root的手機(SDK 4.1及以上),需要在你的PC端添加一個環境變數「ANDROID_HVPROTO=ddm」。
下面列舉一些面試者常使用的方式。
merge merge標簽的作用是合並UI布局,使用該標簽能降低UI布局的嵌套層次。
merge標簽可用於兩種情況:
ViewStub ViewStub標簽引入的布局默認不會inflate,既不會顯示也不會佔用位置。 ViewStub常用來引入那些默認不會顯示,只在特殊情況下顯示的布局,如數據載入進度布局、出錯提示布局等。
需要在使用時手動inflate:
ViewStub在一定的程度可以起到減少嵌套層次的作用,特別是很多時候我們的程序可能不需要走到ViewStub的界面。
include 將可復用的組件抽取出來並通過include標簽使用,但<include>標簽能減少布局的層次嗎?
我認為不能。include主要解決的是相同布局的復用問題,它並不能減少布局的層次。
用RelativeLayout代替LinearLayout
很多人為了減少布局層次喜歡用RelativeLayout代替LinearLayout,不過可能達到的效果並不會很明顯。層次是減少了,但本身RelativeLayout就會比LinearLayout性能差一點。
有一些界面,比如一個圖片和一個文本的布局(ListItem常見的布局方式),可以利用TextView有drawableLeft, drawableRight等屬性,完全不需要RelativeLayout或者LinearLayout布局。
傳統的布局方式存在一定的缺陷,如RelativeLayout要兩次測量(measure)它的子View才能知道確切的高度;如果LinearLayout布局的子View有設置了layout_weight,那麼它也需要測量兩次才能獲得布局的高度。
相對於傳統的布局方式,Android官方還推出了兩種新的布局方式:ConstraintLayout和FlexboxLayout。
ConstraintLayout ConstraintLayout即約束布局,在2016年由Google I/O推出。ConstraintLayout和RelativeLayout有點類似,控制項之間根據依賴關系而存在,但比RelativeLayout更加靈活。創建大型復雜的布局仍然可以使用扁平的層級(不用嵌套View Group),說的簡單些就是,再復雜的界面也可以只有2層層次。
要使用ConstraintLayout需要在build.gradle中添加相關的support庫:
使用ConstraintLayout可以有效的解決布局嵌套過多導致的性能問題,官方也對其渲染性能進行了優化,並且ConstraintLayout支持可視化的方式編寫布局。
不過學會熟練使用ConstraintLayout會需要一點時間,但這是值得的。
FlexBoxLayout 做過前端開發(CSS方面)的同學對FlexBox一定不會陌生,最近我在做微信小程序開發時也涉及到FlexBox。FlexBox(彈性布局)是w3c在2009年提出的一種新的布局方案,解決以前那種傳統css的盒模型的局限性。
Google開源了FlexboxLayout布局和前端CSS FlexBox布局具有相同的功能(肯定有不一樣的地方),但已經足夠在Android上改進布局的構建方式。
FlexBoxLayout可以理解成一種更高級的LinearLayout,不過比LinearLayout更加強大和靈活。如果我們使用LinearLayout布局的話,那麼不同的解析度,也許我們要重新調整布局,勢必會需要跟多的布局文件放在不同的資源目錄。而使用FlexBoxLayout來布局的話,它可以適應各種界面的改變(所以叫響應式布局)。
如果對前端的Flexbox不太了解的話,你還需要補一些概念,好在這些東西在網上很容易找到。
可能很多讀者會覺這樣的面試題是吹毛求疵,很多項目中哪有這么復雜的界面,根本就用不到這些優化措施。
可以說厲害的人,或者叫高手,可能只是比較多在意這些細節而已。在實踐中的經歷告訴我,很多難於解決的性能問題,並不是因為有一個影響性能的問題無法攻克,而是沒有一個明顯的制約因素,是有各種小問題一點一點堆積起來,最終積重難返。
所以,把細節做好,或者意識到細節的地方可能引發的問題,對我們解決問題是很有幫助的,不要浪費了讓你可以成長的細節。
有需要更多Android高級進階和面試資料的朋友可以私信我獲取
⑤ android 界面布局實現
1、最外面用線性布局,屬性為垂直,margin TOP屬性設置為10px,在這個布局包括了下面的2、3、4、5、6幾個布局
2、日常選項為TextView,
3、時間用線性布局屬性為水平,margin right屬性設置為10px,同時添加背景圖片屬性,裡面在放兩個TextView分別是時間和2011-10-06 11:04,包含在時間的線性布局中
4、賬戶用線性布局屬性為水平,margin right屬性設置為10px,同時添加背景圖片屬性,裡面在放兩個TextView分別是賬戶和現金,包含在時間的賬戶的線性布局中
5、商家地點用線性布局屬性為水平,margin right屬性設置為10px,同時添加背景圖片屬性,裡面在放兩個TextView分別是商家地點和未指定,包含在商家/地點的線性布局中
6、備注用線性布局屬性為水平,margin right屬性設置為10px,同時添加背景圖片屬性,裡面放一個TextView是備注
這樣就可以做出來了
還不明白的話在給我留言吧~我把大概的代碼寫給你看~
⑥ android phone 程序裡面 哪個文件是撥號主界面的布局文件,在哪裡被引用了我想把撥號的主界面修改下子,
撥號鍵盤的程序在packages\apps\Contacts裡面。
DialtactsActivity.java是4個TAB的主程序,裡面有:
private void setupDialerTab() {
Intent intent = new Intent("com.android.phone.action.TOUCH_DIALER");
intent.setClass(this, TwelveKeyDialer.class);
mTabHost.addTab(mTabHost.newTabSpec("dialer")
.setIndicator(getString(R.string.dialerIconLabel),
getResources().getDrawable(R.drawable.ic_tab_dialer))
.setContent(intent));
}
可見撥號鍵盤的程序在TwelveKeyDialer.java裡面,有如下代碼:
protected int getContentViewResource() {
return R.layout.twelve_key_dialer;
}
布局文件在twelve_key_dialer.xml裡面,有如下代碼:
<!-- Keypad section -->
<include layout="@layout/dialpad" />
可見最終的撥號鍵盤的代碼在dialpad.xml裡面。
⑦ Android基礎之常用五種布局
所有東西依次都放在左上角,會重疊,這個布局比較簡單,也只能放一點比較簡單的東西。
分為垂直布局( android:orientation="vertical" )和水平布局( android:orientation="horizontal" )。
垂直布局時,每一行就只有一個元素,多個元素依次垂直往下;
水平布局時,只有一行,每一個元素依次向右排列。
用X,Y坐標來指定元素的位置,這種布局方式也比較簡單
在屏幕旋轉時,往往會出問題,而且多個元素的時候,計算比較麻煩。
可以理解為某一個元素為參照物,來定位的布局方式。
主要屬性有:
相對於某一個元素 android:layout_below 、 android:layout_toLeftOf
相對於父元素的地方 android:layout_alignParentLeft 、 android:layout_alignParentRigh ;
每一個 TableLayout 裡面有表格行 TableRow , TableRow 裡面可以具體定義每一個元素。每一個布局都有自己適合的方式,這五個布局元素可以相互嵌套應用,做出美觀的界面。
⑧ android的界面布局方式有哪些
View的布局顯示方式有下面幾種:線性布局(Linear Layout)、相對布局(Relative Layout)、表格布局(Table Layout)、網格視圖(Grid View)、標簽布局(Tab Layout)、列表視圖(List View)、絕對布局(AbsoluteLayout)
⑨ 怎樣設計android系統的用戶界面請簡述界面布局方式
1 學習原生軟體的界面開發,而且最好還是看一些開源的,無論從設計的角度還是從開發的角度都是極好的。
比如優秀的作品很多,這些不開源學習界面就好,開源的可以看看系統的應用。和系統本身結合的非常好,設計風格和系統也很統一,給用戶較好的體驗。
2 確定整體產品色彩基調,色彩基調可以從產品功能中提取,也可以從產品LOGO中提取;
3 做出界面原型,包括功能布局、頁面交互等元素;
4 在界面原型基礎上進行色彩添加,進一步的細節調整;
5 有了好的外形基礎後,再就是回歸到用戶體驗。記住用戶才是第一位的。交互設計通常靠外形吸引用戶,但真正留住用戶的是細節上的人性化。讓這些極簡的設計細節控制用戶的生活習慣,最終讓用戶離不開它們!根據用戶使用體驗反饋再次修改界面,不斷完善。