现在的位置: 首页 > 综合 > 正文

actionbarsherlock的学习记录1(4小时)

2014年01月11日 ⁄ 综合 ⁄ 共 5554字 ⁄ 字号 评论关闭

    今天打算花4个小时时间系统的学习一下actionbarsherlock,看看它的整体框架,还有使用方法,如果可以的话,希望能够做一个简单的例子。

首先,看一下actionbarsherlock的源码,有几个包,先看看里面都是什么

app-里面放着一些adtivity,Fragment类似的东西,可以知道除了普通的Activity还支持listActivity。

internal-一些内部类,很乱,暂时先不看他好了。

view和widget-里面的东西,都是和actionbar相关的。

好吧,我承认,没看懂什么东西,还是给自己这4个小时定格计划:分析完30个demo

---------Action items--------demo1-------------------

选择最简单的:Demos里面的Action items,UI设计就是actionbar上面有几个按钮而已,然后点了之后又没有什么反应,其实就是actionitem的添加

第一步:新建一个工程,关联到abs的api工程上

第二步:直接把actionItems类及关联的东西考过来

好吧,认真的看一下里面怎么写的。

public class ActionItems extends SherlockActivity需要实现两个方法

public boolean onCreateOptionsMenu(Menu menu)--重写SherlockActivity里的方法,初始化actionbar上面的menu

  如果需要添加menu,只要

  menu.add("Save").setIcon(R.drawable.ic_compose_inverse).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    这一句是挺简单的哈。这种调用方法确实值得推荐,挺可爱的。

protected void onCreate(Bundle savedInstanceState)-来自于Activity

  setContentView(R.layout.text);

资源文件text,就不需要管actionbar的内容,因为继承了SherlockActivity所以自动会有的。基本上是明白了。

以上就是如何添加action items

---------Action Mode-------demo2--------------------

这个感觉稍微复杂一点,但是这是我的修行,加油。

页面可以不赘述,就是两个button和一段文字

按下start按钮的时候 mMode = startActionMode(new AnActionModeOfEpicProportions());

这里面startActionMode是SherlockActivity的方法,AnActionModeOfEpicProportions是一个ActionMode.Callback实现类

AnActionModeOfEpicProportions在onCreateOptionsMenu里面加上几个action item

onActionItemClicked的时候关掉mode: mode.finish();

以上就是action mode的用法

看来action item增加到3个以后可以自动放到更多里面,比较方便。

---------ActionModesNoActionBar-------demo3--------------------

这个是没有title bar的时候进入action mode。这个框架的好处就是一个类拷贝过来就可以用了,太可爱了。

其实和上一个一样,就是多了一句话 requestWindowFeature(Window.FEATURE_NO_TITLE);

使用Theme.Sherlock.NoActionBar or Theme.Sherlock.Light.NoActionBar也可以达到同样效果

试验了确实可以达到效果

---------ActionProviders-------demo4--------------------

这个好像和前面的不一样,加油,要踏实。

看了一下,这里面是menu item的常规用法了。瞪大眼睛仔细看看。

1,onCreateOptionsMenu的时候初始化menu

  getSupportMenuInflater().inflate(R.menu.settings_action_provider, menu);

   <item android:id="@+id/menu_item_action_provider_action_bar"
        android:showAsAction="ifRoom"
        android:title="Settings"
        android:actionProviderClass="com.example.abs_test.ActionProviders$SettingsActionProvider"/>

里面的actionProviderClass指向了一个ActionProvider类,初始化等工作就靠这个了

其实也可以用代码代替  menu.add("setting").setActionProvider( new SettingsActionProvider(this)).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

我试验了一下也是好用的

2,SettingsActionProvider里面 onCreateActionView第一了view,并且按键操作都放在这里

按下按钮的时候执行 mContext.startActivity(sSettingsIntent);就进到setting页面了。

太好了,看了这个例子,Inflater的用法明了了。

---------CollapsibleActionItem----demo5--------------------

这一个是搜索框,我超希望能做出来的。Collapsible是可折叠的意思。

只是显示搜索框,还没有到结果哪一步,这一步简单,就是

        menu.add("Search")
            .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search)
            .setActionView(R.layout.collapsible_edittext)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
只要setActionView就自动上去了?挺好的。

---------ContextMenus----demo6--------------------

还有2小时,坚持,不可以溜号

可以看出,这个例子是长按2秒钟后弹出一个浮动菜单,就是所谓的上下文菜单

onOptionsItemSelected 是响应 menu item 的。

1,onCreateContextMenu里面

menu.add("One");
        menu.add("Two");

这就是长按弹出来的列表,神奇

这个ContextItem的内容按下之后在onContextItemSelected里面处理

2,onCreate中  registerForContextMenu(findViewById(R.id.show_context_menu));

注册上下文菜单。

ok,就是这么简单。android中应该没有这么简单的吧?

---------CustomNavigation----demo7--------------------

这个是单选的框

把含有两个radiobutton的资源文件inflate成一个view

然后把这个view设置到customview上。

 getSupportActionBar().setCustomView(customNav);

然后这是可以显示

   getSupportActionBar().setDisplayShowCustomEnabled(true);

这个两个radiobutton还比较好,如果多了就超出来了,就不好看了。

---------IndeterminateProgress----demo8--------------------

模糊的进度条,这个也是超级简单,

onCreate中写上这个,进度条就在哪了       requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

要写在 setContentView(R.layout.iprogress);前面

 然后设置进度条true和false就可以了  setSupportProgressBarIndeterminateVisibility(true);

弄上之后会显示在actionbar的右边

---------ListNavigation----demo9--------------------

然后是三角下拉的那种菜单,那个好看

        ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context,
          R.array.locations, R.layout.sherlock_spinner_item);
        list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);//设置下拉列表样式的,如果没有这个,列表挺难看

        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);//这是有3中模式的,如果设置下拉资源了,就要选择list,不然其他的资源没有,显示不出来

        getSupportActionBar().setListNavigationCallbacks(list, this);//选择listener

---------Overlay----demo10--------------------

好多文字,这是什么?overlay,覆盖,也就是说覆盖在上面一层那种东西。

我觉得怎么让这层半透明的去掉,这个挺重要的。

1,requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);设置feature

2,设置背景色透明

    getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.ab_bg_black));
ok啦

---------Preference----demo11--------------------

帅,只要在资源文件里面,都可以定义这些东西了,如果能用程序定义就好了。

首先要继承于SherlockPreferenceActivity

PreferenceCategory

 下面CheckBoxPreference、EditTextPreference、ListPreference、PreferenceScreen,还可以有依赖关系

这个一般用在setting里面感觉是很不错的。

 addPreferencesFromResource(R.xml.preferences);就可以了

再多add几个也没有关系

还有就是,例子里怎么也不写上响应呢。

---------Progress----demo12--------------------

一个长长的进度条,这种风格的进度条是放在上面的

 requestWindowFeature(Window.FEATURE_PROGRESS);

点go的时候打开线程,在线程里面 setSupportProgress(progress);就可以了。

问题:怎么动态加载建议项,怎么把右边的变成放大镜

---------SearchViews----demo13--------------------

上个demo是怎么画,这里面终于讲怎么响应了。包括一个建议搜索条目什么的。

例子中是在创建optionmenu的时候把mSuggestionsAdapter设置到searchView里面去的,这个可以考虑动态加入

而且输入之后没有按什么响应呢?这都是问题。才发现,可以点搜索键进行搜索,也可以自己

---------FeatureToggles----demo20--------------------

这个可真够复杂的。

功能有:隐藏和显示actionbar,导航栏是用list还是tabs,添加删除选择tab,增加删除actionitems,显示和隐藏title,显示和隐藏二级title,

显示隐藏customview,actionitem位置调整,使用/不使用logo,显示上级箭头,显示进度条,含糊进度显示

看来这个是所有的功能合集,所以最后看,应该有一些我都知道怎么做了。

 

一下午这么快过去了,本来打算看30个的,没想到只看了13个,明天继续吧,一定要全部看会,加油

【上篇】
【下篇】

抱歉!评论已关闭.