ApiDemo-ActionBar学习总结
来源:互联网 发布:电脑右下角激活windows 编辑:程序博客网 时间:2024/04/27 19:03
ActionBar是Google在3.0中引入的另类menu菜单,不同与menu的是, 它显示在界面顶端,它比menu更灵活,更简洁。在4.0版本的应用中多有使用,例如短信,浏览器,图库。它会根据屏幕的布局显示情况,决定显示为传统的menu还是ActionBar。一般ActionBar也会定义和menu相同的菜单定义文件,在Activity中同样通过onCreateOptionsMenu(Menu menu)加载此布局,根据menu定义文件的属性决定是否显示为ActionBar。
一,ActionBar的显示选项。通过 ActionBar.setDisplayOptions(change, flags)可设置ActionBar的显示选项。
ActionBar.DISPLAY_HOME_AS_UP 在ActionBar左边显示'<'图标,在应用中可以通过点击此图标回到应用的主页。
ActionBar.DISPLAY_SHOW_HOME 在ActionBar左边显示Home图标,就是此应用的icon图标,点击它也可以返回到首页。
ActionBar.DISPLAY_USE_LOGO 在Home图标的位置显示我们设置的logo图标,Activity的android:logo="@drawable/apidemo_androidlogo"属性
ActionBar.DISPLAY_SHOW_TITLE 显示图标后面的标题名称,Activity的lable属性
ActionBar.DISPLAY_SHOW_CUSTOM 显示通过setCustomView添加到ActionBar的自定义View
ActionBar.NAVIGATION_MODE_TABS 设置此属性,将显示我们添加到ActionBar的Tab,类似于TabHost
二,设定menu选项是否以ActionBar方式显示。设定menu中item的showAsAction属性。
android:showAsAction="ifRoom" 如果屏幕顶部有足够空间,菜单项显示为ActionBar
android:showAsAction="always" 菜单项总是显示为ActionBar
android:showAsAction="never" 菜单项不会显示为ActionBar
三,在布局文件中指订ActionBar的View 使用android:actionViewClass="android.widget.SearchView"属性,当点击此ActionBar的图标会显示指定的View。
四,ActionBar也可以的添加,就像动态添加菜单一样。
MenuItem actionItem = menu.add("Action Button"); actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);五,使用ActionBar显示TabHost的效果。
添加tab项
final ActionBar bar = getActionBar(); //得到ActionBar对象 bar.addTab(bar.newTab() //添加tab项 .setText(text) //设置tab标签标题 .setTabListener(new TabListener(new TabContentFragment(text)))); //设置tab的内容设置ActionBar以Tab导航模式显示
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
六,在布局文件中设置Button的单击事件,设置Button的android:onClick="onAddTab" 属性,其中onAddTab需要在Button启用的Activity中定义此方法,当Button被点击时就会调用次方法。
七,使用ActionProvider。 ActionProvider可以为ActionBar或者menu提供一个动作内容,例如转去Settings,Message,和Activity的跳转很类似。
首先需要定义ActionProvider
public static class SettingsActionProvider extends ActionProvider { /** An intent for launching the system settings. */ private static final Intent sSettingsIntent = new Intent(Settings.ACTION_SETTINGS); /** Context for accessing resources. */ private final Context mContext; /** * Creates a new instance. * * @param context Context for accessing resources. */ public SettingsActionProvider(Context context) { super(context); mContext = context; } /** * {@inheritDoc} */ @Override public View onCreateActionView() { // Inflate the action view to be shown on the action bar. LayoutInflater layoutInflater = LayoutInflater.from(mContext); View view = layoutInflater.inflate(R.layout.action_bar_settings_action_provider, null); ImageButton button = (ImageButton) view.findViewById(R.id.button); // Attach a click listener for launching the system settings. button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mContext.startActivity(sSettingsIntent); } }); return view; } /** * {@inheritDoc} */ @Override public boolean onPerformDefaultAction() { // This is called if the host menu item placed in the overflow menu of the // action bar is clicked and the host activity did not handle the click. mContext.startActivity(sSettingsIntent); return true; } }
然后将ActionProvider添加到ActionBar中,设置android:actionProviderClass="com.example.android.apis.app.ActionBarSettingsActionProviderActivity$SettingsActionProvider"属性就可以,
这样,点击这个ActionBar就会转到设定的Activity。感觉这个类似于给以个Button添加了监听。
八,菜单布局的加载方法,在onCreateOptionsMenu方法中使用getMenuInflater().inflate(R.menu.action_bar_settings_action_provider, menu);
九,Activity中使用的流
inputStream = getResources().openRawResource(R.raw.robot); //打开Raw资源文件夹的流,读取其中指定的图片 outputStream = openFileOutput(SHARED_FILE_NAME, Context.MODE_WORLD_READABLE | Context.MODE_APPEND); //以指定模式打开一输入流
- ApiDemo-ActionBar学习总结
- android ApiDemo学习(一)service总结
- ActionBar学习总结
- ApiDemo的学习总结,个人心得,App模块之Activity
- ApiDemo学习日记 D1
- ApiDemo学习日记 D2
- APIDEMO PREFERENCE 学习 ACTIVTIY
- APIDEMO TAB ACTIVITY 学习
- ApiDemo学习日记 D3
- ApiDemo学习之AlphaBitmap
- ApiDemo - View -Animation 学习
- ApiDemo学习 search 组件
- Android apidemo 学习笔记
- Android ApiDemo 学习笔记
- ApiDemo学习 ClipboardSample
- Apidemo学习 PurgeableBitmap
- Apidemo学习 WindowSurface
- Apidemo学习 SurfaceViewOverlay
- oralce jobs 定时执行一个存储过程
- arm-linux GDB Server 环境搭建
- java排序
- vector的用法
- Silverlight的依赖属性
- ApiDemo-ActionBar学习总结
- BlazeDS+spring整合到J2EE应用的最佳实践
- 使用gdb调试当前运行的程序
- UML核心元素之参与者
- 使用CXF框架发布webservice
- android从本地获取图片
- 第一章:概述——网络经济与企业管理00910【自考】
- 用 Core dump 实现一步调试到错误地方
- ListCtrl控件的简单使用