成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

明明白白Android平臺的Action Bar

移動開發 Android
Action Bar為Android 3.0及更高版本開發人員提供了一個相對較新的導航部件,它取代了傳統的應用程序標題欄,提供了更豐富的功能,允許你更快遍歷屏幕和應用程序的功能,只需很少的點擊,困惑也更少了。

Action Bar是什么?

很長一段時間內,開發人員一直在為他們的Android應用程序設計功能標題欄,Android 3.0正式引入了Action Bar部件,規范了應用程序導航設計,一些新的Android設備,如平板電腦也拋棄了傳統的導航功能,使用軟件按鈕取代了物理主屏、菜單、后退和搜索按鈕。

Action Bar的概念非常簡單,如果你的應用程序有一個“選項”菜單,當用戶點擊“菜單”按鈕時,出現一個活動項目菜單,你的應用程序可以利用Android 3.0中的Action Bar功能,它修改了應用程序標題欄,以一種易于使用的方式顯示那些先前在“選項”菜單中的活動,如圖1所示。

Action Bar是什么?
圖 1 蜂巢設備上的Action Bar

 

Action Bar有哪些行為?

最棘手的是運行蜂巢及更高版本的設備顯示不同Action Bar功能時,取決于應用程序的目標SDK是設置為蜂巢還是傳統的API級別。

我們來看一個簡單的例子,假設我們的應用程序包含四個屏幕:一個主Activity和三個“清潔的”Activity(打掃、擦洗和吸塵),我們向主Activity添加一個選項菜單,以便讓用戶跳轉到另三個Activity,如圖2所示。

Action Bar有哪些行為?
圖 2 帶有一個選項菜單和四個屏幕的簡單應用程序

該應用程序兩個基本的組件是選項菜單資源文件和主Activity類,其它Activity類只是簡單地顯示一個ImageView和一個TextView控件,選項菜單資源文件簡單定義了選項菜單項,其內容如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <menu 
  3.     xmlns:android=">http://schemas.android.com/apk/res/android"> 
  4.     <item 
  5.         android:id="@+id/sweep" 
  6.         android:icon="@drawable/ic_menu_sweep" 
  7.         android:title="@string/sweep"  
  8.         android:onClick="onOptionSweep" /> 
  9.     <item 
  10.         android:id="@+id/scrub" 
  11.         android:icon="@drawable/ic_menu_scrub" 
  12.         android:title="@string/scrub" 
  13.         android:onClick="onOptionScrub" /> 
  14.     <item 
  15.         android:id="@+id/vacuum" 
  16.         android:icon="@drawable/ic_menu_vac" 
  17.         android:title="@string/vacuum"  
  18.         android:onClick="onOptionVacuum" /> 
  19. </menu> 

主Activity類將這個菜單資源作為一個選項菜單載入,并定義了每個選項菜單項的onClick處理程序,其內容如下:

  1. package com.mamlambo.actonthis; 
  2. import android.app.Activity; 
  3. import android.content.Intent; 
  4. import android.os.Bundle; 
  5. import android.view.Menu; 
  6. import android.view.MenuInflater; 
  7. import android.view.MenuItem; 
  8. public class ActOnThisActivity extends Activity { 
  9.    /** Called when the activity is first created. */ 
  10.    @Override 
  11.    public void onCreate(Bundle savedInstanceState) { 
  12.       super.onCreate(savedInstanceState); 
  13.       setContentView(R.layout.main); 
  14.    } 
  15.    @Override 
  16.    public boolean onCreateOptionsMenu(Menu menu) { 
  17.       MenuInflater inflater = getMenuInflater(); 
  18.       inflater.inflate(R.menu.cleaningoptions, menu); 
  19.       return true; 
  20.    } 
  21.       public void onOptionSweep(MenuItem i) 
  22.    { 
  23.       startActivity(new Intent(this, SweepActivity.class)); 
  24.    } 
  25.    public void onOptionScrub(MenuItem i) 
  26.    { 
  27.       startActivity(new Intent(this, ScrubActivity.class)); 
  28.    } 
  29.       public void onOptionVacuum(MenuItem i) 
  30.    { 
  31.       startActivity(new Intent(this, VacuumActivity.class)); 
  32.    } 
  33.    } 

到現在為止我們沒有做任何事情,因此我們在技術上并不需要將應用程序的Android清單文件設置為高目標API級別,我們這里將其設置為API級別9。

 

  1. <uses-sdk android:minSdkVersion="9" /> 

當我們在蜂巢設備上運行這個“傳統的”應用程序時,系統欄會顯示一個像網格的圖標(第四個),它和傳統Android手機上的“菜單”按鈕所起的作用是等同的,只不過它變成一個軟件按鈕了,點擊它將會顯示選項菜單,就好像是在一部老式智能手機上一樣,如圖3所示,屏幕頂部的標題欄僅僅顯示了應用程序的標題。

Action Bar有哪些行為?
圖 3 在蜂巢設備上的傳統應用程序行為

如果我們修改應用程序Android清單文件的目標API級別,將其設為API級別11(蜂巢),應用程序將自動應用Action Bar機制。

 

  1. <uses-sdk android:minSdkVersion="11" /> 

默認情況下,標題欄顯示了應用程序圖標,名稱和所謂的溢出菜單圖標,點擊這個圖標會彈出一個文本菜單,列出選項菜單項,如圖4所示。

Action Bar有哪些行為?
圖 4 蜂巢設備上的蜂巢應用程序行為

自定義你的Action Bar

當你的應用程序目標設為蜂巢平臺時,你可以利用Action Bar部件提供的全部功能,將你的選項菜單項放在Action Bar的右上角,對用戶來說使用更方便,控制該行為的主菜單項屬性是android:showAsAction。

這個屬性可接受的值有:

1、always:這個值會使菜單項一直顯示在Action Bar上。

2、ifRoom:如果有足夠的空間,這個值會使菜單項顯示在Action Bar上。

3、never:這個值使菜單項永遠都不出現在Action Bar上。

4、withText:這個值使菜單項和它的圖標,菜單文本一起顯示。

我們修改選項菜單資源文件來看看這個屬性的不同使用效果,首先,如果你還記得圖1的內容,不記得就返回到前面重新觀察一下,你就會發現,Action Bar中顯示了每個菜單項的圖標和它們的名稱,換句話說就是,每個菜單項目有以下屬性:

 

  1. android:showAsAction="ifRoom|withText" 

另一個合理的設置是顯示Action Bar上的每個菜單項,只要有空間,但沒有雜亂的文字,換句話說就是,每個菜單項有以下屬性:

 

  1. android:showAsAction="ifRoom" 

圖5顯示了這個變化在典型蜂巢設備上的效果。

自定義你的Action Bar
圖 5 當空間足夠時,在Action Bar上顯示菜單項,包括文本

***,如果我們不想讓Vacuum菜單項顯示在Action Bar上,其屬性值就應該是:

 

  1. android:showAsAction="never" 

這樣在Action Bar上將只會顯示兩個菜單項:Sweep和Scrub。在右上角,你會再次看到溢出菜單,點擊它就會看到被設為“never”的菜單項,如Vacuum,以及其它不適合放在Action Bar上的菜單項,如圖6所示。

自定義你的Action Bar
圖 6 在Action Bar上顯示部分菜單項,其它菜單項永遠不顯示(顯示在溢出菜單中)

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <menu 
  3.     xmlns:android="http://schemas.android.com/apk/res/android"> 
  4.     <item 
  5.         android:id="@+id/sweep" 
  6.         android:icon="@drawable/ic_menu_sweep" 
  7.         android:title="@string/sweep"  
  8.         android:onClick="onOptionSweep" /> 
  9.     <item 
  10.         android:id="@+id/scrub" 
  11.         android:icon="@drawable/ic_menu_scrub" 
  12.         android:title="@string/scrub" 
  13.         android:onClick="onOptionScrub" /> 
  14.     <item 
  15.         android:id="@+id/vacuum" 
  16.         android:icon="@drawable/ic_menu_vac" 
  17.         android:title="@string/vacuum"  
  18.         android:onClick="onOptionVacuum" /> 
  19. </menu> 

處理Action Bar上的應用程序圖標點擊行為

Action Bar的另一個功能是用戶可以點擊左上角的應用程序圖標,雖然默認情況下點擊行為沒有任何反應,但如果增加一個自定義“主屏幕”功能,或關聯到你的啟動屏幕,那樣操作起來更有趣。

假設你想更新ScrubActivity類中的默認Action Bar,以便點擊應用程序圖標時用戶可以返回到主Activity(同時清空Activity stack)。

實現起來也很簡單,你只需要為ScrubActivity類實現onOptionsItemSelected()方法,并處理特定的菜單項標識符android.R.id.home即可,例如:

 

  1. @Override 
  2. public boolean onOptionsItemSelected(MenuItem item)  
  3. {     
  4.    switch (item.getItemId())  
  5.    {         
  6.       case android.R.id.home:             
  7.          Intent intent = new Intent(this, ActOnThisActivity.class);             
  8.          intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
  9.          startActivity(intent);             
  10.          return true;         
  11.       default:             
  12.          return super.onOptionsItemSelected(item);     
  13.    } 

就這么簡單,你也可以在應用程序圖標的左邊顯示一個箭頭,在你Activity的onCreate()方法中聯合使用setDisplayHomeAsUpEnabled()方法,可以返回到指定的屏幕。

 

  1. ActionBar bar = getActionBar(); 
  2. bar.setDisplayHomeAsUpEnabled(true); 

如圖7所示,我們在Sweep屏幕上啟用了這個功能,在Action Bar上增加了一個箭頭小圖標。

處理Action Bar應用程序圖標點擊行為
圖 7 帶有可點擊的主屏幕按鈕和一個返回箭頭的Action Bar

使用不需要Action Bar的屏幕

當你將應用程序目標設為API 11或更高時,你的所有屏幕默認都將擁有Action Bar,如果你不想用這個新部件,有幾種方法可以移除它,最簡單的方法可能是通過編程手段直接在Activity類中關閉它,例如,我們可以用下面兩行代碼關閉Vacuum屏幕上的Action Bar,只需要將這兩行代碼添加到Activity類的onCreate()方法中即可。

 

  1. ActionBar bar = getActionBar(); 
  2. bar.hide(); 

這兩行代碼將移除屏幕頂部的整個Action Bar,應用程序名稱也不會顯示了,你也可以隱藏Action Bar,在布局文件中創建一個特殊的自定義主題即可,詳細情況請閱讀Android SDK文檔。

Action Bar的高級功能

本文只是對Action Bar做了簡單的介紹,可以說只觸及了它的表面,Action Bar是支持樣式的,包括修改背景圖像和其它自定義屬性,它們也支持多個其它成熟的視圖類型和部件,不僅僅是那些在選項菜單中的菜單項,如標簽和下來列表,你甚至可以增加其它類型的視圖控件,創建Action Bar功能區域,詳細情況請閱讀Android SDK文檔。

小結

如果你的應用程序已經使用了選項菜單,當你把目標設為蜂巢設備時,你可以利用Action Bar的所有功能,就像向你的菜單布局文件增加一些新屬性一樣簡單。每個屏幕的Action Bar都是可定制的,作為開發人員,你可以控制顯示哪個項目,以及如何顯示,當你想留更多的屏幕顯示游戲畫面等內容時,你甚至可以移除整個Action Bar。

原文出處:http://www.informit.com/articles/article.aspx?p=1743642

責任編輯:佚名 來源: it168
相關推薦

2020-02-10 19:42:01

CPIP 協議,

2010-09-06 17:35:03

PPPOE配置

2011-04-27 17:05:39

2012-02-20 21:59:08

無線路由設置

2010-10-08 15:05:00

無線路由設置

2010-08-03 09:17:00

2021-09-26 07:38:39

組合問題數據結構算法

2010-06-29 14:38:14

Linux服務器

2010-07-05 15:33:49

2021-02-23 08:10:18

Nginx反向代理負載均衡器

2021-09-30 09:59:23

OSPF網絡協議網絡技術

2010-01-13 17:07:21

防輻射機箱選購

2013-05-23 11:16:28

大數據技術大數據AdTime

2010-08-06 10:00:05

負載均衡

2010-08-25 09:09:58

2010-10-15 10:01:19

無線網絡構建

2010-09-09 09:52:03

Linux服務器

2010-07-14 09:55:12

2020-12-22 10:57:36

DockerLinux程序員

2020-11-18 09:25:39

Docker
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费在线观看av网站 | 自拍视频网站 | 成年人的视频免费观看 | 免费观看一级毛片视频 | 亚洲国产精品成人 | 精品国产高清一区二区三区 | 香蕉av免费 | 成人在线视频网 | 成人午夜精品 | 日本黄色高清视频 | 欧美九九| 亚洲人久久 | 成人字幕网zmw | 欧美一区二区在线播放 | 亚洲午夜电影 | 99热播精品 | 成人在线观看免费爱爱 | 一区二区三区视频在线观看 | 欧美久操网 | 亚洲日本中文字幕在线 | 欧美a级网站 | 成人免费视频网站在线看 | 欧美精品在线免费观看 | 日韩在线视频一区二区三区 | 久久精品日 | 国产精品激情 | 成人不卡视频 | 国产成人在线播放 | 久久99深爱久久99精品 | 亚洲精品日日夜夜 | 国产剧情久久 | 亚洲欧美另类在线观看 | 欧美在线精品一区 | 久久久久久成人 | 涩在线 | 在线国产一区 | 狠狠操狠狠搞 | 婷婷在线免费 | 99亚洲精品 | 毛片a级毛片免费播放100 | 在线观看国产视频 |