Demo ActionBar Trong bài viết này, mình sẽ tạo ra 1 demo nho nhỏ trên Android 3.0 về các ActionBar, cơ bản thì mình thấy các ActionBar cho phép chỉnh TitleBar của 1 Activity để có thể n
Trang 1Demo ActionBar Trong bài viết này, mình sẽ tạo ra 1 demo nho nhỏ trên Android 3.0 về các ActionBar,
cơ bản thì mình thấy các ActionBar cho phép chỉnh TitleBar của 1 Activity để có thể nhảy qua 1 Activity khác Và các bạn cũng lưu ý thêm là trong phần này mình chỉ làm 1 ứng dụng mang tính chất demo (xuất các command line ra màn hình) chứ không hẳn
và 1 ứng dụng hoàn chỉnh để làm 1 cái gì đó Và code phần demo của mình như sau:
1/ Tạo Project :
Project name: TestActionBar
Build Target: Android 3.2
Application name: TestActionBar
Package name: com.dac.actionbar
Create Activity: TabNavigationActionBarActivity
2/ Trong file main.xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="fill"
>
<TextView android:id="@+id/textViewId"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:text="Initial Text Message"
android:textColor="@android:color/black"
android:textSize="25sp"
android:scrollbars="vertical"
android:scrollbarStyle="insideOverlay"
android:scrollbarSize="25dip"
android:scrollbarFadeDuration="0"
/>
</LinearLayout>
Trang 23/ Các bạn tạo thêm 1 folder menu và 1 file menu.xml trong folder đó:
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/menuGroup_Main">
<item android:id="@+id/menu_action_icon1"
android:title="Action Icon1"
android:icon="@drawable/creep001"
android:showAsAction="ifRoom"/>
<item android:id="@+id/menu_action_icon2"
android:title="Action Icon2"
android:icon="@drawable/creep002"
android:showAsAction="ifRoom"/>
<item android:id="@+id/menu_icon_test"
android:title="Icon Test"
android:icon="@drawable/creep003"/>
<item android:id="@+id/menu_invoke_listnav"
android:title="Invoke List Nav"
/>
<item android:id="@+id/menu_invoke_standardnav"
android:title="Invoke Standard Nav"
/>
<item android:id="@+id/menu_invoke_tabnav"
android:title="Invoke Tab Nav"
/>
<item android:id="@+id/menu_da_clear"
android:orderInCategory="10"
android:title="clear" />
</group>
</menu>
4/ Và trong Package chính các bạn tạo từng class lẫn Activity có tên và code như sau: (lưu ý thêm các hình với tên tương ứng trong folder drawable)
+BaseActionBarActivity.java:
Trang 3package com.dac.actionbar;
{
{
R.layout.main, R.id.textViewId, inTag);
tag = inTag;
}
@Override
{
super.onCreate(savedInstanceState);
TextView tv = this.getTextView();
tv.setText(tag);
}
{
if (item.getItemId() == android.R.id.home) {
this.reportBack(tag,"Home Pressed");
}
if (item.getItemId() == R.id.menu_invoke_tabnav){
if (getNavMode() ==
ActionBar.NAVIGATION_MODE_TABS)
this.reportBack(tag,
"You are already in tab nav");
}
if (item.getItemId() == R.id.menu_invoke_listnav){
if (getNavMode() ==
ActionBar.NAVIGATION_MODE_LIST)
Trang 4{
this.reportBack(tag,
"You are already in list nav");
}
if (item.getItemId() == R.id.menu_invoke_standardnav){
if (getNavMode() ==
ActionBar.NAVIGATION_MODE_STANDARD)
this.reportBack(tag,
"You are already in standard nav");
this.invokeStandardNav();
}
}
ActionBar bar = this.getActionBar();
}
Intent i = new Intent(this,
TabNavigationActionBarActivity.class);
startActivity(i);
}
Intent i = new Intent(this,
ListNavigationActionBarActivity.class);
startActivity(i);
}
Intent i = new Intent(this,
StandardNavigationActionBarActivity.class);
startActivity(i);
}
}
+ BaseListener.java:
Trang 5import android.content.Context;
{
{
mReportTo = target;
mContext = ctx;
}
}
+ DebugActivity.java :
{
onMenuItemSelected(MenuItem item);
int inLayoutId,
int inDebugTextViewId, String inTag)
{
tag = inTag;
Trang 6menuId = inMenuId;
layoutid = inLayoutId;
debugTextViewId = inDebugTextViewId;
}
@Override
super.onCreate(savedInstanceState);
setContentView(this.layoutid);
TextView tv = this.getTextView();
tv.setMovementMethod(
ScrollingMovementMethod.getInstance());
}
@Override
MenuInflater inflater = getMenuInflater();
inflater.inflate(menuId, menu);
}
@Override
appendMenuItemText(item);
if (item.getItemId() == R.id.menu_da_clear){
this.emptyText();
}
if (b == true)
{
}
}
return
(TextView)this.findViewById(this.debugTextViewId);
}
String title = menuItem.getTitle().toString();
appendText("MenuItem:" + title);
}
TextView tv = getTextView();
tv.setText("");
}
TextView tv = getTextView();
tv.setText(s + "\n" + tv.getText());
Log.d( tag,s);
}
Trang 7this.appendText(tag + ":" + message);
Log.d(tag,message);
}
{
String s = tag + ":" + message;
Toast mToast =
Toast.makeText(this, s, Toast.LENGTH_SHORT);
mToast.show();
reportBack(tag,message);
Log.d(tag,message);
}
}
+ IReportBack.java:
{
}
+ ListListener.java :
{
Context ctx, IReportBack target)
{
}
int itemPosition, long itemId)
{
this.mReportTo.reportBack(
"list listener","ItemPostion:" + itemPosition);
}
}
Trang 8+ ListNavigationActionBarActivity.java:
{
"List Navigation ActionBarActivity";
{
}
@Override
{
super.onCreate(savedInstanceState);
workwithListActionBar();
}
{
ActionBar bar = this.getActionBar();
bar.setTitle(tag);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
bar.setListNavigationCallbacks(
new SimpleSpinnerArrayAdapter(this),
new ListListener(this,this));
}
}
+ SimpleSpinnerArrayAdapter.java :
Trang 9public class SimpleSpinnerArrayAdapter
{
{
android.R.layout.simple_spinner_item, new String[]{"one","two"});
this.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);
}
int position, View convertView, ViewGroup parent)
{
position, convertView, parent);
}
}
+ StandardNavigationActionBarActivity.java :
{
"Standard Navigation ActionBarActivity";
{
}
@Override
{
super.onCreate(savedInstanceState);
workwithStandardActionBar();
}
{
ActionBar bar = this.getActionBar();
bar.setTitle(tag);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
Trang 10attachTabs(bar);
}
{
TabListener tl = new TabListener(this,this);
Tab tab1 = bar.newTab();
tab1.setText("Tab1");
tab1.setTabListener(tl);
bar.addTab(tab1);
Tab tab2 = bar.newTab();
tab2.setText("Tab2");
tab2.setTabListener(tl);
bar.addTab(tab2);
}
}
+ TabListener.java :
{
IReportBack target) {
}
FragmentTransaction ft)
{
this.mReportTo.reportBack(tag, "ontab re selected:" + tab.getText());
}
FragmentTransaction ft) {
this.mReportTo.reportBack(tag, "ontab selected:" + tab.getText());
}
FragmentTransaction ft)
Trang 11this.mReportTo.reportBack(tag, "ontab un selected:" + tab.getText());
}
}
+ TabNavigationActionBarActivity.java :
{
"Tab Navigation ActionBarActivity";
{
}
@Override
{
super.onCreate(savedInstanceState);
workwithTabbedActionBar();
}
{
ActionBar bar = this.getActionBar();
bar.setTitle(tag);
bar.setNavigationMode(
ActionBar.NAVIGATION_MODE_TABS);
TabListener tl = new TabListener(this,this);
Tab tab1 = bar.newTab();
tab1.setText("Tab1");
tab1.setTabListener(tl);
bar.addTab(tab1);
Tab tab2 = bar.newTab();
tab2.setText("Tab2");
tab2.setTabListener(tl);
bar.addTab(tab2);
Trang 12}
}
Để có thể chạy được ứng dụng thì các bạn phải khai báo các Activity vừa tạo trong file AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dac.actionbar"
android:versionCode="1"
android:versionName="1.0.0">
<application android:icon="@drawable/icon"
android:label="ActionBars Demo App">
<activity android:name=".TabNavigationActionBarActivity"
android:label="Action Bar Demonstration: TabNav">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ListNavigationActionBarActivity"
android:label="Action Bar Demonstration: ListNav">
</activity>
<activity android:name=".DropdownListNavigationActionBarActivity"
android:label="Action Bar Demonstration: DropdownNav">
</activity>
<activity android:name=".StandardNavigationActionBarActivity"
android:label="Action Bar Demonstration: StandardNav">
</activity>
</application>
<uses-sdk android:minSdkVersion="11" />
</manifest>
Cuối cùng các bạn chỉ việc chạy thử ứng dụng và bấm vào các biểu tượng, tab trên Title :