Android UI設(shè)計模板Dashboard及Action Bar的應用
原創(chuàng)【51CTO譯文】Action bar及Dashboard能在大多數(shù)Android程序項目中為用戶提供界面設(shè)計圖案。
Dashboard項目組已經(jīng)開始著手于一個項目,以幫助開發(fā)者們更快地使他們的項目步入軌道。這一項目的目的是將可在不同UI模板上使用的代碼收集并整合起來。我以Google IO會議上的Android應用程序為基礎(chǔ),去掉冗余的代碼,以使這些精簡過的好用的部分更易于理解。
我在做的項目可以在下面的谷歌代碼網(wǎng)站中找到.
目前該項目只進行一項工作,其成果將同時作用于Dashboard及Action bar。

實施指南
讓所有的Android應用程序都能同時支持縱向及橫向顯示模式,這一點非常重要。盡管許多布局方案在編輯正確的前提下,都可以自動實現(xiàn)對縱向、橫向顯示模式的支持,但Dashboard所制作的布局還做不到這一點。為了保證這兩種模式下都具備充足的可用空間,我們需要編寫兩個單獨的布局XMLs。只要我們將相同的布局XML文件放入正確的文件夾并提交給Android系統(tǒng),系統(tǒng)框架將在運行時自動選擇合適的顯示方式。
 
支持不同方向下的不同布局的構(gòu)架范例
縱向布局XML代碼
- dashboard.xml:
 - <?xml version="1.0" encoding="utf-8"?>
 - <!--
 - Copyright 2010 Google Inc.
 - Licensed under the Apache License, Version 2.0 (the "License");
 - you may not use this file except in compliance with the License.
 - You may obtain a copy of the License at
 - http://www.apache.org/licenses/LICENSE-2.0
 - Unless required by applicable law or agreed to in writing, software
 - distributed under the License is distributed on an "AS IS" BASIS,
 - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 - See the License for the specific language governing permissions and
 - limitations under the License.
 - -->
 - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 - android:id="@+id/home_root"
 - android:orientation="vertical"
 - android:layout_width="fill_parent"
 - android:layout_height="fill_parent">
 - <LinearLayout style="@style/TitleBar">
 - <ImageView style="@style/TitleBarLogo"
 - android:contentDescription="@string/description_logo"
 - android:src="@drawable/title_logo" />
 - <View style="@style/TitleBarSpring" />
 - <ImageView style="@style/TitleBarSeparator" />
 - <ImageButton style="@style/TitleBarAction"
 - android:id="@+id/btn_title_refresh"
 - android:contentDescription="@string/description_refresh"
 - android:src="@drawable/ic_title_refresh"
 - android:onClick="onActionBarButtonClick" />
 - <ProgressBar style="@style/TitleBarProgressIndicator"
 - android:id="@+id/title_refresh_progress"
 - android:visibility="gone" />
 - <ImageView style="@style/TitleBarSeparator" />
 - <ImageButton style="@style/TitleBarAction"
 - android:contentDescription="@string/description_search"
 - android:src="@drawable/ic_title_search"
 - android:onClick="onActionBarButtonClick" />
 - </LinearLayout>
 - <LinearLayout
 - android:orientation="vertical"
 - android:layout_width="fill_parent"
 - android:layout_height="wrap_content"
 - android:layout_weight="1"
 - android:padding="6dip">
 - <LinearLayout
 - android:orientation="horizontal"
 - android:layout_width="fill_parent"
 - android:layout_height="wrap_content"
 - android:layout_weight="1">
 - <Button android:id="@+id/action_one_button"
 - style="@style/HomeButton"
 - android:onClick="onActionOneClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - <Button android:id="@+id/action_two_button"
 - style="@style/HomeButton"
 - android:onClick="onActionTwoClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - </LinearLayout>
 - <LinearLayout
 - android:orientation="horizontal"
 - android:layout_width="fill_parent"
 - android:layout_height="wrap_content"
 - android:layout_weight="1">
 - <Button android:id="@+id/action_three_button"
 - style="@style/HomeButton"
 - android:onClick="onActionThreeClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - <Button android:id="@+id/action_four_button"
 - style="@style/HomeButton"
 - android:onClick="onActionFourClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - </LinearLayout>
 - <LinearLayout
 - android:orientation="horizontal"
 - android:layout_width="fill_parent"
 - android:layout_height="wrap_content"
 - android:layout_weight="1">
 - <Button android:id="@+id/action_five_button"
 - style="@style/HomeButton"
 - android:onClick="onActionFiveClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - <Button android:id="@+id/action_six_button"
 - style="@style/HomeButton"
 - android:onClick="onActionSixClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - </LinearLayout>
 - </LinearLayout>
 - <LinearLayout
 - android:id="@+id/now_playing_loading"
 - android:layout_width="fill_parent"
 - android:layout_height="@dimen/now_playing_height"
 - android:orientation="horizontal"
 - android:background="#eee"
 - android:gravity="center">
 - <ProgressBar
 - style="?android:attr/progressBarStyleSmall"
 - android:layout_width="wrap_content"
 - android:layout_height="wrap_content"
 - android:paddingRight="6dip"
 - android:indeterminate="true"/>
 - <TextView
 - android:layout_width="wrap_content"
 - android:layout_height="wrap_content"
 - android:textSize="@dimen/text_size_small"
 - android:text="@string/now_playing_loading"/>
 - </LinearLayout>
 - </LinearLayout>
 
瀏覽模式XML代碼
- dashboard.xml:
 - <?xml version="1.0" encoding="utf-8"?>
 - <!--
 - Copyright 2010 Google Inc.
 - Licensed under the Apache License, Version 2.0 (the "License");
 - you may not use this file except in compliance with the License.
 - You may obtain a copy of the License at
 - http://www.apache.org/licenses/LICENSE-2.0
 - Unless required by applicable law or agreed to in writing, software
 - distributed under the License is distributed on an "AS IS" BASIS,
 - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 - See the License for the specific language governing permissions and
 - limitations under the License.
 - -->
 - <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 - android:id="@+id/home_root"
 - android:orientation="vertical"
 - android:layout_width="fill_parent"
 - android:layout_height="fill_parent">
 - <LinearLayout style="@style/TitleBar">
 - <ImageView style="@style/TitleBarLogo"
 - android:src="@drawable/title_logo" />
 - <View style="@style/TitleBarSpring" />
 - <ImageView style="@style/TitleBarSeparator" />
 - <ImageButton style="@style/TitleBarAction"
 - android:id="@+id/btn_title_refresh"
 - android:src="@drawable/ic_title_refresh"
 - android:onClick="onActionBarButtonClick" />
 - <ProgressBar style="@style/TitleBarProgressIndicator"
 - android:id="@+id/title_refresh_progress"
 - android:visibility="gone" />
 - <ImageView style="@style/TitleBarSeparator" />
 - <ImageButton style="@style/TitleBarAction"
 - android:src="@drawable/ic_title_search"
 - android:onClick="onActionBarButtonClick" />
 - </LinearLayout>
 - <LinearLayout
 - android:orientation="vertical"
 - android:layout_width="fill_parent"
 - android:layout_height="wrap_content"
 - android:layout_weight="1"
 - android:padding="6dip">
 - <LinearLayout
 - android:orientation="horizontal"
 - android:layout_width="fill_parent"
 - android:layout_height="wrap_content"
 - android:layout_weight="1">
 - <Button android:id="@+id/action_one_button"
 - style="@style/HomeButton"
 - android:onClick="onActionOneClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - <Button android:id="@+id/action_two_button"
 - style="@style/HomeButton"
 - android:onClick="onActionTwoClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - <Button android:id="@+id/action_three_button"
 - style="@style/HomeButton"
 - android:onClick="onActionThreeClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - </LinearLayout>
 - <LinearLayout
 - android:orientation="horizontal"
 - android:layout_width="fill_parent"
 - android:layout_height="wrap_content"
 - android:layout_weight="1">
 - <Button android:id="@+id/action_four_button"
 - style="@style/HomeButton"
 - android:onClick="onActionFourClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - <Button android:id="@+id/action_five_button"
 - style="@style/HomeButton"
 - android:onClick="onActionFiveClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - <Button android:id="@+id/action_six_button"
 - style="@style/HomeButton"
 - android:onClick="onActionSixClick"
 - android:text="@string/dashboard_action"
 - android:drawableTop="@drawable/dashboard_button_selector"/>
 - </LinearLayout>
 - </LinearLayout>
 - </LinearLayout>
 
其它實用項目
在Android系統(tǒng)中另有許多實用項目,以使開發(fā)者可以很容易地獲取兼容性許可。
iosched - Google IO app by Google
這個項目試圖提供一個在應用程序上實現(xiàn)Dashboard及Action bar用戶設(shè)計模塊的完整范例,這是個相當大的工程。有鑒于此,如果你只需要兼容Dashboard或Action bar工具的設(shè)計成果,我建議你使用android-ui-patterns(android用戶模塊工具)。
源自網(wǎng)絡的項目目標列表
◆避免在重復拷貝相同的代碼上浪費時間
◆嘗試使Android上的不同應用程序更加相似
◆幫助開發(fā)者構(gòu)建功能強大的應用程序
◆充分利用Android系統(tǒng)框架的功能
◆盡可能多地使用XML
原文地址
【51CTO譯稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載,合作媒體轉(zhuǎn)載請注明原文出處、作者及51CTO譯稿和譯者!】
【編輯推薦】















 
 
 


 
 
 
 