Actionbarsherlock Demo 浅析 :Static Attachment

Static Attachment(静态连接):

ActionBarSherlock mSherlock = ActionBarSherlock.wrap(this);//方法返回与Actionbar交互的ActionBarSherlock实例。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(SampleList.THEME); //Used for theme switching in samples
        super.onCreate(savedInstanceState);

        /*
         * 大多数与其他系统的交互作用是通过这个实例来完成的。内容,标题,行动栏和菜单的扩展都可以完成。
         *
         * 所有的基本活动都使用这个类来提供正常的动作条功能,这样他们就可以使用这种静态的连接方法来做所有的事情。
         *
         * 为了正确设置布局包装和调度菜单事件(如果需要的话)需要调用setContentView或类似getactionbar。
         */
        mSherlock.setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW);//
        mSherlock.setContentView(R.layout.text);

        ((TextView)findViewById(R.id.text)).setText(R.string.static_attach_content);
    }

setUiOptions(  ):设置一些影响UI界面的选项。

ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW:表示当actionbar太小的时候(放不下所有的图标),action bar 应该将所有的action item 放置在一个独立的bar上(也就是在底部显示)。其实这个标志就是调用分离的bar来显示action items。

public class StaticAttachment extends Activity implements OnCreateOptionsMenuListener

因为这个Activity是个原生的Activity,没有继承SherlockActivity,所以需要调用wrap来包装这个activity,让它获得actionbarsherlock来操作ui。

/*
* 如果想要使用具备static attachment的action items,需要去重新调度创建,准备阶段和需要响应的事件。如果你还想要使用static attachment,那就必须创建一个基本的
* activity,然后去重写这三个方法中的一个或多个。     
*/
    @Override
    public boolean onCreateOptionsMenu(android.view.Menu menu) {
        return mSherlock.dispatchCreateOptionsMenu(menu);
    }
dispatchCreateOptionsMenu(Menu):Menu参数代表原生的Activity菜单,所谓原生的菜单其实就是系统自带的menu样式,但是我们现在要用自定义的menu去替换他。因为Activity实现了OnCreateOptionsMenuListener接口,所以该方法会触发这个监听器,从而系统会去调用onCreateOptionsMenu(Menu menu)方法。
    /*
     *
     *为了能够去接收这些事件,需要去实现一个来自ActionBarSherlock的接口,这个接口会回调相应的函数来处理这个事件。
     *可以实现三种接口,他们对应三种不同的菜单事件。
     *
     *需要记住的是这些接口父类都没有实现,所以你需要返回一个有意义的值给父类,父类才能知道该怎么做。
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //Used to put dark icons on light action bar
        boolean isLight = SampleList.THEME == R.style.Theme_Sherlock_Light;

        menu.add("Save")
            .setIcon(isLight ? R.drawable.ic_compose_inverse : R.drawable.ic_compose)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

        menu.add("Search")
            .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

        menu.add("Refresh")
            .setIcon(isLight ? R.drawable.ic_refresh_inverse : R.drawable.ic_refresh)
            .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

        return true;
    }
posted @ 2015-08-06 15:06  黑泡man  阅读(234)  评论(0编辑  收藏  举报