action bar
TRANSCRIPT
![Page 1: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/1.jpg)
1
Action Bar
Kewang
![Page 2: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/2.jpg)
2
1.App icon (android.R.id.home)2.View control3.Action buttons4.Action overflow
![Page 3: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/3.jpg)
3
Action Bar wants to provide
Identifying the app brandConsistent navigationMake key actions
![Page 4: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/4.jpg)
4
Show Action Bar
<uses-sdk android:minSdkVersion="11" />
<application android:theme="@android:style/Theme.Holo" />
API Level MUST be 11 or greatertheme's android:windowActionBar="true", or theme MUST be Holo or its descendants
![Page 5: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/5.jpg)
5
Hide Action Bar
<application android:theme="@android:style/Theme.Holo.NoActionBar" />
getActionBar().hide();
Manifest.xml (remove Action Bar)
at Activity
![Page 6: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/6.jpg)
6
App Icon for Navigation
●Go to the app "home" activity●Navigate "up" the app's structural hierarchy
![Page 7: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/7.jpg)
7
App Icon for Navigation (Home)
@Overridepublic boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { Intent intent = new Intent(this, Main.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true; }} add FLAG_ACTIVITY_CLEAR_TOP
![Page 8: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/8.jpg)
8
App Icon for Navigation (Up)
BACK navigation
![Page 9: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/9.jpg)
9
UP navigation
App Icon for Navigation (Up)
![Page 10: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/10.jpg)
10
getActionBar().setDisplayHomeAsUpEnabled(true);
App Icon for Navigation (Up)
![Page 11: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/11.jpg)
11
Action Items
![Page 12: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/12.jpg)
12
Action Items
<item android:actionViewClass="android.widget.SearchView" android:icon="@drawable/icon_modify" android:showAsAction="ifRoom" android:title="@string/menu_settings"/><item android:icon="@drawable/icon_status" android:showAsAction="ifRoom|withText" android:title="設定二"/>
MUST define title & id
![Page 13: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/13.jpg)
13
<item android:icon="@drawable/icon_setup" android:showAsAction="never" android:title="設定一"/><item android:icon="@drawable/icon_manual" android:showAsAction="always" android:title="主設定"> <menu> <item android:title="密碼設定"/> <item android:title="檢核戶號"/> </menu></item>
Action Items
![Page 14: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/14.jpg)
14
Action View@Overridepublic boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu);
SearchView v = menu.findItem(R.id.set).getActionView();
v.setOnSearchClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(Main.this, "Search", Toast.LENGTH_SHORT).show(); } });
return true;}
![Page 15: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/15.jpg)
15
Action Bar Custom View
actionBarView = getLayoutInflater().inflate(R.layout.navigation, null);
getActionBar().setCustomView(actionBarView);getActionBar().setDisplayShowCustomEnabled(true);
![Page 16: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/16.jpg)
16
Styling
boolean: android:windowActionBarOverlay
false
true
![Page 17: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/17.jpg)
17
Styling
android:actionButtonStyleandroid:actionBarItemBackgroundandroid:itemBackgroundandroid:actionBarDividerandroid:actionMenuTextColorandroid:actionMenuTextAppearanceandroid:actionBarWidgetTheme
![Page 18: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/18.jpg)
18
ActionView
![Page 19: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/19.jpg)
19
ActionView
<item android:id="@+id/search" android:actionViewClass="android.widget.SearchView" android:showAsAction="ifRoom|collapseActionView" android:title="Search"/>
<item android:id="@+id/search" android:actionLayout="@layout/action_layout" android:showAsAction="ifRoom|collapseActionView" android:title="Search"/>
![Page 20: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/20.jpg)
20
ActionViewpublic boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu);
MenuItem item = menu.findItem(R.id.search); View v = (View) item.getActionView(); // SDK 11+
item.setOnActionExpandListener(new OnActionExpandListener() { boolean onMenuItemActionExpand(MenuItem item) { return true; // trigger by item.expandActionView() }
boolean onMenuItemActionCollapse(MenuItem item) { return true; // trigger by item.collapseActionView() } });
return true;}
only SDK 14+
![Page 21: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/21.jpg)
21
Navigation
![Page 22: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/22.jpg)
22
Navigation
setNavigationMode(int)• ActionBar.NAVIGATION_MODE_STANDARD• ActionBar.NAVIGATION_MODE_TABS• ActionBar.NAVIGATION_MODE_LIST
![Page 23: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/23.jpg)
23
Navigation
STANDARD
![Page 24: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/24.jpg)
24
Navigation
TABS
![Page 25: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/25.jpg)
25
Navigation
LIST
![Page 26: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/26.jpg)
26
Navigation - TABS implementationTab tab = getActionBar().newTab();
tab.setText("這是TAB Name");tab.setIcon(getDrawable(R.drawable.icon_setup));tab.setTabListener(new TabListener() { void onTabUnselected(Tab, FragmentTransaction) {}
void onTabSelected(Tab, FragmentTransaction) { // using tab.getPosition() to do something }
void onTabReselected(Tab, FragmentTransaction) {}});
getActionBar().addTab(tab);
![Page 27: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/27.jpg)
27
Navigation - LIST implementation
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.simple_spinner_item, R.id.text1, new String[] { "aaa", "bbb" });
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
getActionBar().setListNavigationCallbacks(adapter, new OnNavigationListener() { boolean onNavigationItemSelected(int position, long id) { // using position to do something
return true; }});
![Page 28: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/28.jpg)
28
「API就是要無腦!
」
![Page 29: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/29.jpg)
29
FragmentFramework
• Action Bar's style• Navigation mode• Fragment's callback at CRUD• App Icon navigation mode• Swipe all fragments• Main fragment settings
![Page 30: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/30.jpg)
30
public abstract class Container { public void addFragment(String, Fragment) public void removeFragment(Fragment) public void showFragment(Fragment) public void hideFragment(Fragment) public void replaceFragment(String, Fragment)
public void onFragmentAdded(FragmentProperty) public void onFragmentRemoved(FragmentProperty) public void onFragmentShown(FragmentProperty) public void onFragmentHidden(FragmentProperty) public void onFragmentReplaced(FragmentProperty)}
Container
![Page 31: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/31.jpg)
31
public abstract class Container { public boolean isSliding(); public int getNavigationMode(); public int getAppIconMode();
public abstract Fragment getMainFragment(); public abstract String getMainFragmentName();}
Container
![Page 32: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/32.jpg)
32
Navigation
public interface ListNavigation { public void setActionBar(ActionBar actionBar); public int getActionBarLayoutId(); public BaseAdapter getNavigationAdapter();
public interface StandardNavigation extends ListNavigation { public int getNavigationWidth(); public int getNavigationDirection(); }} ListNavigation for LIST
StandardNavigation for STANDARD
![Page 33: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/33.jpg)
33
TODO
• TODO standard navigation direction• TODO communication between fragments• TODO bulk fragments on creating• TODO hierarchical fragments• TODO more generic• more...
![Page 34: Action bar](https://reader034.vdocuments.mx/reader034/viewer/2022052303/555ac826d8b42a761a8b4f53/html5/thumbnails/34.jpg)
34