本系列的阅读,前提你是一个Android开发者,而且是一个app开发,并且有一定的工作经验。本系列的学习,不会每个细节都说明,会把有“看点”的地方加以说明。
如果你不是Android开发,但是对这个actionbar想有个大概的印象,看看这个极光推送-感受下极光推送的效果_gkkk_1的博客-CSDN博客
的Jush SDK demo就是一个actionbar了。
actionbar作为一个刚开始作为标题栏的存在,现在慢慢充当越来越多元化的角色,当然你也可以隐藏不使用它。现在更多的使用ToolBar替代ActionBar,ToolBar显然更加灵活,并且是个Material Design 风格的导航控件。当然我们是来研究Framework的,如果只是介绍这个actionbar的功能,那就是app教程了,我们还是要看看它的源码的。
ActionBar作为一个抽象类,我们就关注它的抽象方法,主要是从这些方法知道设计一个actionbar需要考虑使用什么功能。
public abstract void setCustomView(View view);
actionbar就是个视图容器,这里这个setCustomView明显就是用来给自己填充View视图的入口。
public abstract void setCustomView(View view, LayoutParams layoutParams);
如果上面就是生硬的默认加载进来一个图,这个就是加载进来,并且可以指定布局规则的一个布局参数。
public abstract void setCustomView(@LayoutRes int resId);
如果说第二个你觉得太棒了,那就高兴太早了,这个方法明显更加的smart,它允许你在家做homework,然后整体提交给我,我给展示的平台,给你充分的发挥的空间。直接引用布局id来加载布局。
public abstract void setIcon(@DrawableRes int resId);
public abstract void setIcon(Drawable icon);
actionbar不止只有“标题”,还有更拉风的
极光推送-感受下极光推送的效果_gkkk_1的博客-CSDN博客
Jush SDK demo左侧个性化的logo。
- public abstract void setListNavigationCallbacks(SpinnerAdapter adapter,
- OnNavigationListener callback);
adapter为下拉菜单的适配器,callback是在这个回调中定义当用户选择列表中一个项目时所发生的行为
设置title和副标题
public abstract void setTitle(CharSequence title);
public abstract void setSubtitle(CharSequence subtitle);
控制显示隐藏、判断、是否可见
- public abstract boolean isShowing();
-
- public abstract void hide();
-
- public abstract void show();
剩余的一些抽象方法我们不在列举了,由于ActionBar时至今日,已是昨日黄花了,作为曾经的activity的门面,今日已经不在辉煌,等它的只有超大的deprecated。我们研究它,就是回味和知道我们很多年前调用这些方法时,当时很方便,现在只是学习一下,设计一个导航栏当时谷歌开发者的设计思想,这才是我们要学习的武功路数。