[Android] Android開發優化之——對介面UI的優化(2)
在一個應用程式中,一般都會存在多個Activity,每個Activity對應著一個UI佈局檔案。一般來說,為了保持不同視窗之間的風格統一,在這些UI佈局檔案中,幾乎肯定會用到很多相同的佈局。如果我們在每個xml檔案中都把相同的佈局都重寫一遍,一個是程式碼冗餘,可讀性很差;另一個是修改起來比較麻煩,對後期的修改和維護非常不利。所以,一般情況下,我們需要把相同佈局的程式碼單獨寫成一個模組,然後在用到的時候,可以通過<include /> 標籤來重用layout的程式碼。
常見的,有的應用在最上方會有一個標題欄。類似下圖所示。
圖 標題欄的示例
如果專案中大部分Activity的佈局都包含這樣的標題欄,就可以把標題欄的佈局單獨寫成一個xml檔案。
<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:background="@drawable/navigator_bar_bg" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@android:id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:gravity="center" android:hint="title" android:textAppearance="?android:attr/textAppearanceMedium" /> <ImageView android:id="@android:id/closeButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:src="@drawable/close" /> </RelativeLayout> |
我們將上面的xml檔案命名為“navigator_bar.xml”,其它需要標題欄的Activity的xml佈局檔案就可以直接引用此檔案了。
<include layout="@layout/navigator_bar" /> |
經驗分享: 一般情況下,在專案的初期就能夠大致確定整體UI的風格。所以早期的時候就可以做一些規劃,將通用的模組先寫出來。 下面是可能可以抽出的共用的佈局: 1)背景。有的應用在不同的介面裡會用到統一的背景。後期可能會經常修改預設背景,所以可以將背景做成一個通用模組。 2)頭部的標題欄。如果應用有統一的頭部標題欄,就可以抽取出來。 3)底部的導航欄。如果應用有導航欄,而且大部分的Activity的底部導航欄是相同的,就可以將導航欄寫成一個通用模組。 4)ListView。大部分應用都會用到ListView展示多條資料。專案後期可能會經常調整ListView的風格,所以將ListView作為一個通用的模組比較好。 |
相關推薦
[Android] Android開發優化之——對介面UI的優化(2)
在一個應用程式中,一般都會存在多個Activity,每個Activity對應著一個UI佈局檔案。一般來說,為了保持不同視窗之間的風格統一,在這些UI佈局檔案中,幾乎肯定會用到很多相同的佈局。如果我們在每個xml檔案中都把相同的佈局都重寫一遍,一個是程式碼冗餘,可讀性
Android開發優化之——對介面UI的優化(3)
本篇博文主要討論一下複雜介面中常用的一種技術——介面延遲載入技術。 有時候,我們的頁面中可能會包含一些佈局,這些佈局預設是隱藏的,當用戶觸發了一定的操作之後,隱藏的佈局才會顯示出來。比如,我們有一個Activity用來顯示好友的列表,當用戶點選Menu中的“匯入”以後
Android開發實戰之——ProgressDialog的使用(一)
ProgressDialog的使用 Android原生的ProgressDialog分為兩類 1. 一類是進度條不明確的 2. 另一類是進度條明確的 展示的形式有圓形和水平進度條 注意:對於不明確的進度條才可以設定Indeterminate為tru
Android應用開發:網絡工具——Volley(二)
respond sid 開發 多少 called creat miss 相等 eal 引言 在Android應用開發:網絡工具——Volley(一)中結合Cloudant服務介紹了Volley的一般使用方法,當中包括了兩種請求類型StringRequest和JsonOb
Android應用開發:網絡工具——Volley(一)
要求 com 庫文件 urn welcom 順序 之前 air tin 引言 網絡一直是我個人的盲點,前一陣子抽空學習了一下Volley網絡工具的用法,也透過源代碼進行了進一步的學習,有一些心得想分享出來。在Android開發中,成熟的網絡工具不少,And
Android編譯系統分析之幾個關鍵點(三)
已開通新的部落格,後續文字都會發到新部落格 http://www.0xfree.top Android 編譯系統解析系列文件 解析lunch的執行過程以及make執行過程中include檔案的順序 Android編譯系統分析之lunch分析 Android
Android編譯系統分析之幾個關鍵點(二)
已開通新的部落格,後續文字都會發到新部落格 http://www.0xfree.top Android 編譯系統解析系列文件 解析lunch的執行過程以及make執行過程中include檔案的順序 Android編譯系統分析之lunch分析 Android
Android編譯系統分析之幾個關鍵點(一)
已開通新的部落格,後續文字都會發到新部落格 http://www.0xfree.top Android 編譯系統解析系列文件 解析lunch的執行過程以及make執行過程中include檔案的順序 Android編譯系統分析之lunch分析 Android
Android安全/開發基礎--8--Java本地介面(JNI)
8-1、JNI概述 JNI的本意是Java Native Interface(Java本地介面),是為了方便Java和C/C++等原生代碼所封裝的一層介面,使用JNI技術可以對Java層遮蔽不同作業系統平臺之間的差異,從而實現Java本身的平臺無關特性。JNI和
Android 火車票訂購APP之延時頁(1)
我終於對Android下手啦! 早就想做一款APP啦!順便熟悉一下資料結構。 首先,我下載了AS,剛建立了一個工程,就爆紅了,真的難受,好像是什麼appt2的問題,上網查了以後,找到一個檔案加了一句程式碼,錯誤成警告了,後來還是老出錯,我直接解除安裝了AS,用IDEA編的,其實差不多,到現在
Android原始碼之Gallery專題研究(2)
引言 上一篇文章已經講解了資料載入過程,接下來我們來看一看資料載入後的處理過程。按照正常的思維邏輯,當資料載入之後,接下來就應該考慮資料的顯示邏輯。 MVC顯示邏輯 大家可能對J2EE的MVC架構比較熟悉,Gallery2和MVC有什麼關係呢,簡直是瞎扯???首先,我們先回
Android FM模組學習之四原始碼解析(三)
由於最近一直忙專案,沒有時間來更新文件,今天抽空來寫一點,希望大家可以學習使用! 這一章當然還是來分析FM模組的原始碼。FmReceiver.java publicFmReceiver(String devicePath,FmRxEvCallbacks
Android應用開發以及設計思想深度剖析(1)
本文內容,主題是透過應用程式來分析Android系統的設計原理與構架。我們先會簡單介紹一下Android裡的應用程式程式設計,然後以這些應用程 序在執行環境上的需求來分析出,為什麼我們的Android系統需要今天這樣的設計方案,這樣的設計會有怎樣的意義, Android究竟
Android簡訊傳送流程之長簡訊傳送(原)
從前面《Android簡訊傳送流程之普通簡訊傳送》流程看到,長簡訊與普通簡訊的流程從SmsManager的sendMultipartTextMessage()方法開始區分,現在我們來看長簡訊的流程: @SmsManager.java
Android 仿Win8的metro的UI介面(上)
轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/23441455昨晚沒事手機下載了一些APP,發現現在仿win8的主介面越來越多,在大家見慣了類GridView或者類Tab後,給人一種耳目一新的感覺。今天在e
一個android專案開發遇到的各種小問題(一)
1、map格式字串如何解析? 藉助json,先將字串轉化為json格式,再取值 JSONObject object = new JSONObject(posMap); clientIden = object.getString("iden"); ---------
Android FM模組學習之四原始碼解析(四)
我今天想分享的是FM模組的儲存方法,即FmSharedPreferences.java FmSharedPreferences(Context context)在構造方法中載入Load()方法, public void Load(){ Log.d(
Android FM模組學習之四原始碼解析(一)
前一章我們瞭解了FM手動調頻,接下來我們要分析FM模組用到的原始碼。此原始碼是基於高通平臺的,別的平臺都大同小異,只不過是平臺自己作了些小改動而已。 首先要看的當然是主activity,
Android 消息處理源代碼分析(2)
urn msg illegal r.java roi fin 報錯 mes pri Android 消息處理源代碼分析(1)點擊打開鏈接 繼續接著分析剩下的類文件 Looper.java public final class Looper {
Android進階3:Activity原始碼分析(2) —— Activity啟動和銷燬流程(8.0)
上篇文章講述了app從啟動建立Activity呼叫onCreate,onStart, onResume方法,這篇文章講述一下Activity啟動的另一個切入點:startActivity方法,啟動Activity。 通過上一篇文章,我們總結一下: 1:A