1. 程式人生 > >[Android] Android開發優化之——對介面UI的優化(2)

[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