編輯:關於Android編程
ActionBar動作欄
上面的總結一下:Action bar就是替換3.0以前的tittle bar和menu。
圖1. Honeycomb Gallery應用中的操作欄,從左邊開始,依次是logo、導航選項標簽和操作項(在右邊插入的一個懸浮菜單按鈕)。
Note: If you"re looking for information about the contextual action bar for displaying contextual action items, see the Menu guide.
Action Bar Design For design guidelines, read Android Design's Action Bar guide.
2、ActionBar分成四個區域:
【備注:】什麼是Action overflow
對於沒有MENU按鍵的手機,ActionBar會在最後顯示一個折疊的圖標,點擊該圖標會顯示剩余的選項菜單項。這個折疊的圖標功能就是Action overflow。
Action overflow中存放並不會頻繁用到的操作。按照官方網頁上的說法,“Overflow圖標僅顯示在沒有MENU硬按鍵的手機上,而對於有MENU鍵的手機,overflow圖標是不顯示的,當用戶點擊MENU按鍵時彈出。” 事實上Google已經敦促手機廠商及軟件開發商取消MENU菜單。也就是以前的Menu將不再使用。
(3).ActionBar的創建原則:
①.經常使用:對於用戶來說經常使用的,例如短信應用中的"新建短信"菜單項. ②.重要:對用戶來說非常重要的操作,例如Wi-Fi設置中的"新建網絡". ③.典型:同類的應用程序中都提供了該動作項,如聯系人應用中的"新建聯系人"
(二)、創建ActionBar:
1、XML資源文件中定義menu。同樣可以有普通菜單、二級普通菜單、二級可選項菜單。
android:id="@+id/menu_about"android:orderInCategory="2"android:showAsAction="never"android:title="關於"/>【注意:android:showAsAction的屬性值有:never、always、ifRoom、withText、collapseActionView】android:showAsAction屬性值的解釋:
多個屬性可以同時使用,使用“|”分隔。
(三)、啟動程序圖標導航:(就是讓APP的LOGO也變成可以點擊的導航圖標。)
核心代碼如下:ActionBar actionBar = this.getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);actionBar.setHomeButtonEnabled(true);actionBar.setDisplayShowHomeEnabled(true);@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case android.R.id.home:Intent intent = new Intent(this, MainActivity.class);//將Activity棧中處於MainActivity主頁面之上的Activity都彈出。intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(intent);break;case R.id.action_search:break;default:return super.onOptionsItemSelected(item);}return true;}代碼解釋:
actionBar = getActionBar(); 獲取ActionBar對象。actionBar.setDisplayHomeAsUpEnabled(true); 設置是否將LOGO圖標轉成可點擊的按鈕,並在圖標前添加一個向左的箭頭。actionBar.setHomeButtonEnabled(true); 設置是否將LOGO圖標轉變成可點擊的按鈕。actionBar.setDisplayShowHomeEnabled(true); 設置是否顯示LOGO圖標。
核心代碼如下: android:id="@+id/action_search"android:orderInCategory="1"android:showAsAction="always"android:title="搜索"android:icon="@drawable/ic_launcher"android:actionViewClass="android.widget.SearchView" //兩種寫法任選其一android:actionLayout="@layout/search”/> android:id="@+id/action_clock"android:orderInCategory="2"android:showAsAction="always"android:title="時鐘"android:icon="@drawable/ic_launcher"android:actionLayout="@layout/clock"/>
【備注:】以上兩個布局文件代碼如下:一、顯示搜索的布局文件: android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" > android:id="@+id/search_main"android:layout_width="wrap_content"android:layout_height="wrap_content" >
二、顯示時鐘的布局文件:
android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" >android:id="@+id/analogClock_main"android:layout_width="wrap_content"android:layout_height="wrap_content" />
在清單配置文件中設置android:uiOptions屬性為:splitActionBarWhenNarrow 可以在application或者activity節點中。
1、核心代碼:android:name="com.steven.android23.tab5_fragmentactionbartwo.MainActivity"android:label="@string/app_name"android:uiOptions="splitActionBarWhenNarrow">
1、目的:當橫豎屏切換時,會讓頁面重新加載。在tab模式下,如何記住之前的tab索引呢?需要保護現場。
2、核心代碼:
(七).ActionBar的其他操作:@Override
protected void onSaveInstanceState(Bundle outState) {
Log.i(TAG, "==index:" + getActionBar().getSelectedNavigationIndex());
outState.putInt("tabindex", getActionBar().getSelectedNavigationIndex());
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
getActionBar().setSelectedNavigationItem(
savedInstanceState.getInt("tabindex"));
}
①.設置ActionBar的自定義視圖:
bar.setDisplayShowCustomEnabled(true);
bar.setDisplayHomeEnabled(false);
bar.setCustomView(R.layout.custom_view);
②.設置ActionBar的Logo圖標:
bar.setLogo(R.drawable.logo);
前言:可能Android的事件分發對於剛學Android的童鞋來說接觸得不多,這樣不奇怪。因為剛學的時候,一般人很難注意到或是會選擇主動去了解。那麼究竟什麼是Androi
Android中的不同Activity之間傳遞對象,我們可以考慮采用Bundle.putSerializable(Key,Object);也可以考慮采用Bun
隨著手機用戶的增多,安卓手機軟件市場越來越火爆了。作為程序員,現在安卓編程是一項很火的工作,手游、軟件、系統的很多。 下面小編給學習安卓編程的朋
先看看效果圖:停在中間自動翻頁序言:最近接到一個任務,做一個類似上面自動翻頁的功能。可以看到,這一屏中有三張圖片顯示出來了,有兩張沒有顯示完全,看到設計圖的時候第一反應是