YOMEDIA
ADSENSE
Lập trình Android: Demo ActionBar
169
lượt xem 40
download
lượt xem 40
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
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...
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình Android: Demo ActionBar
- Trung tâm Tin học – ĐH KHTN 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 ể 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 : Lập trình Android – http://laptrinhdidong.vn Page 1
- Trung tâm Tin học – ĐH KHTN 3/ Các bạn tạo thêm 1 folder menu và 1 file menu.xml trong folder đó: 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: Lập trình Android – http://laptrinhdidong.vn Page 2
- Trung tâm Tin học – ĐH KHTN package com.dac.actionbar; import com.dac.actionbar.R; import android.app.ActionBar; import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; import android.widget.TextView; public abstract class BaseActionBarActivity extends DebugActivity { private String tag=null; public BaseActionBarActivity(String inTag) { super(R.menu.menu, R.layout.main, R.id.textViewId, inTag); tag = inTag; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = this.getTextView(); tv.setText(tag); } protected boolean onMenuItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { this.reportBack(tag,"Home Pressed"); return true; } if (item.getItemId() == R.id.menu_invoke_tabnav){ if (getNavMode() == ActionBar.NAVIGATION_MODE_TABS) { this.reportBack(tag, "You are already in tab nav"); } else { this.invokeTabNav(); } return true; } if (item.getItemId() == R.id.menu_invoke_listnav){ if (getNavMode() == ActionBar.NAVIGATION_MODE_LIST) Lập trình Android – http://laptrinhdidong.vn Page 3
- Trung tâm Tin học – ĐH KHTN { this.reportBack(tag, "You are already in list nav"); } else{ this.invokeListNav(); } return true; } if (item.getItemId() == R.id.menu_invoke_standardnav){ if (getNavMode() == ActionBar.NAVIGATION_MODE_STANDARD) { this.reportBack(tag, "You are already in standard nav"); } else{ this.invokeStandardNav(); } return true; } return false; } private int getNavMode(){ ActionBar bar = this.getActionBar(); return bar.getNavigationMode(); } private void invokeTabNav(){ Intent i = new Intent(this, TabNavigationActionBarActivity.class); startActivity(i); } private void invokeListNav(){ Intent i = new Intent(this, ListNavigationActionBarActivity.class); startActivity(i); } private void invokeStandardNav(){ Intent i = new Intent(this, StandardNavigationActionBarActivity.class); startActivity(i); } } + BaseListener.java: package com.dac.actionbar; Lập trình Android – http://laptrinhdidong.vn Page 4
- Trung tâm Tin học – ĐH KHTN import android.content.Context; public class BaseListener { protected IReportBack mReportTo; protected Context mContext; public BaseListener(Context ctx, IReportBack target) { mReportTo = target; mContext = ctx; } } + DebugActivity.java : package com.dac.actionbar; import android.app.Activity; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; public abstract class DebugActivity extends Activity implements IReportBack { protected abstract boolean onMenuItemSelected(MenuItem item); private static String tag=null; private int menuId = 0; private int layoutid = 0; private int debugTextViewId = 0; public DebugActivity(int inMenuId, int inLayoutId, int inDebugTextViewId, String inTag) { tag = inTag; Lập trình Android – http://laptrinhdidong.vn Page 5
- Trung tâm Tin học – ĐH KHTN menuId = inMenuId; layoutid = inLayoutId; debugTextViewId = inDebugTextViewId; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(this.layoutid); TextView tv = this.getTextView(); tv.setMovementMethod( ScrollingMovementMethod.getInstance()); } @Override public boolean onCreateOptionsMenu(Menu menu){ super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(menuId, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ appendMenuItemText(item); if (item.getItemId() == R.id.menu_da_clear){ this.emptyText(); return true; } boolean b = onMenuItemSelected(item); if (b == true) { return true; } return super.onOptionsItemSelected(item); } protected TextView getTextView(){ return (TextView)this.findViewById(this.debugTextViewId); } protected void appendMenuItemText(MenuItem menuItem){ String title = menuItem.getTitle().toString(); appendText("MenuItem:" + title); } protected void emptyText(){ TextView tv = getTextView(); tv.setText(""); } protected void appendText(String s){ TextView tv = getTextView(); tv.setText(s + "\n" + tv.getText()); Log.d(tag,s); } public void reportBack(String tag, String message) Lập trình Android – http://laptrinhdidong.vn Page 6
- Trung tâm Tin học – ĐH KHTN { this.appendText(tag + ":" + message); Log.d(tag,message); } public void reportTransient(String tag, String 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: package com.dac.actionbar; public interface IReportBack { public void reportBack(String tag, String message); public void reportTransient(String tag, String message); } + ListListener.java : package com.dac.actionbar; import android.app.ActionBar; import android.content.Context; public class ListListener extends BaseListener implements ActionBar.OnNavigationListener { public ListListener( Context ctx, IReportBack target) { super(ctx, target); } public boolean onNavigationItemSelected( int itemPosition, long itemId) { this.mReportTo.reportBack( "list listener","ItemPostion:" + itemPosition); return true; } } Lập trình Android – http://laptrinhdidong.vn Page 7
- Trung tâm Tin học – ĐH KHTN + ListNavigationActionBarActivity.java: package com.dac.actionbar; import android.app.ActionBar; import android.os.Bundle; public class ListNavigationActionBarActivity extends BaseActionBarActivity { private static String tag= "List Navigation ActionBarActivity"; public ListNavigationActionBarActivity() { super(tag); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); workwithListActionBar(); } public void 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 : package com.dac.actionbar; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.SpinnerAdapter; Lập trình Android – http://laptrinhdidong.vn Page 8
- Trung tâm Tin học – ĐH KHTN public class SimpleSpinnerArrayAdapter extends ArrayAdapter implements SpinnerAdapter { public SimpleSpinnerArrayAdapter(Context ctx) { super(ctx, android.R.layout.simple_spinner_item, new String[]{"one","two"}); this.setDropDownViewResource( android.R.layout.simple_spinner_dropdown_item); } public View getDropDownView( int position, View convertView, ViewGroup parent) { return super.getDropDownView( position, convertView, parent); } } + StandardNavigationActionBarActivity.java : package com.dac.actionbar; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.os.Bundle; public class StandardNavigationActionBarActivity extends BaseActionBarActivity { private static String tag= "Standard Navigation ActionBarActivity"; public StandardNavigationActionBarActivity() { super(tag); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); workwithStandardActionBar(); } public void workwithStandardActionBar() { ActionBar bar = this.getActionBar(); bar.setTitle(tag); bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); Lập trình Android – http://laptrinhdidong.vn Page 9
- Trung tâm Tin học – ĐH KHTN attachTabs(bar); } public void attachTabs(ActionBar 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 : package com.dac.actionbar; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.FragmentTransaction; import android.content.Context; public class TabListener extends BaseListener implements ActionBar.TabListener { private static String tag = "tc>"; public TabListener(Context ctx, IReportBack target) { super(ctx, target); } public void onTabReselected(Tab tab, FragmentTransaction ft) { this.mReportTo.reportBack(tag, "ontab re selected:" + tab.getText()); } public void onTabSelected(Tab tab, FragmentTransaction ft) { this.mReportTo.reportBack(tag, "ontab selected:" + tab.getText()); } public void onTabUnselected(Tab tab, FragmentTransaction ft) Lập trình Android – http://laptrinhdidong.vn Page 10
- Trung tâm Tin học – ĐH KHTN { this.mReportTo.reportBack(tag, "ontab un selected:" + tab.getText()); } } + TabNavigationActionBarActivity.java : package com.dac.actionbar; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.os.Bundle; public class TabNavigationActionBarActivity extends BaseActionBarActivity { private static String tag= "Tab Navigation ActionBarActivity"; public TabNavigationActionBarActivity() { super(tag); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); workwithTabbedActionBar(); } public void 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); Lập trình Android – http://laptrinhdidong.vn Page 11
- Trung tâm Tin học – ĐH KHTN } } Để 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: 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 : Lập trình Android – http://laptrinhdidong.vn Page 12
- Trung tâm Tin học – ĐH KHTN Lập trình Android – http://laptrinhdidong.vn Page 13
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn