一、ActionBar
1.1、ActionBar介绍
Action Bar是Google在Android 3.0之后推出的一种全新用户操作方式,目的是用来替换掉菜单按键功能。
1.2、ActionBar的组成
1. 应用的图标标题部分:包含了 图标,主标题,副标题,回退部分
2. 导航模式部分:这里显示的是导航模式中的List(导航模式有三种,标准,list,tab)
3. Action button 部分: 用来响应用户的点击事件
4. 溢出菜单部分:如果Action button拜访不下去了,会在此处显示
1.3、ActionBar兼容
1. 导入Android Support V7 library
2. 将Activity 继承 ActionBarActivity 3. 给Activity 设置theme,主题需要是v7下的@style/Theme.AppComp.XXX1.4、ActionBar标题图标部分
用来显示标题和回退的,获取ActionBar的方法和常用的api:
ActionBar actionBar = getSupportActionBar();// 设置主标题actionBar.setTitle("MainTitle");// 设置子标题actionBar.setSubtitle("SubTitle");// 设置应用图标actionBar.setIcon(R.drawable.ic_launcher);// 设置菜单和标题是否可见actionBar.setDisplayShowTitleEnabled(true);// 设置应用图标是否可见actionBar.setDisplayShowHomeEnabled(true);// 设置是否显示Logo优先actionBar.setDisplayUseLogoEnabled(false);// 设置back按钮是否可见actionBar.setDisplayHomeAsUpEnabled(true);
1.5、ActionBar的导航模式
a) 标准模式(默认)
b) list模式
通过ActionBar设置导航模式
ActionBar actionBar = getSupportActionBar();actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
在List模式下设置数据的适配以及监听
ActionBar actionBar = getSupportActionBar();actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);final Listobjects = new ArrayList ();objects.add("主页");objects.add("新闻");objects.add("娱乐");// 创建adapterArrayAdapter adapter = new ArrayAdapter (this, android.R.layout.simple_list_item_1,objects);// 创建监听OnNavigationListener listener = new OnNavigationListener() { @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { Toast.makeText(getApplicationContext(), objects.get(itemPosition) + "", Toast.LENGTH_SHORT).show(); return false; }};// 给ActionBar设置List导航模式下的数据适配和监听actionBar.setListNavigationCallbacks(adapter, listener);
c) Tab模式
通过ActionBar设置Tab模式
ActionBar actionBar = getSupportActionBar();actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
在Tab模式下设置数据的适配以及监听
ActionBar actionBar = getSupportActionBar();actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);final ListmTabs = new ArrayList ();for (int i = 0; i < 3; i++) { // 创建tab Tab tab = actionBar.newTab(); tab.setText("tab" + (i + 1)); tab.setIcon(R.drawable.ic_launcher); mTabs.add(tab); // 设置Tab的监听 tab.setTabListener(new TabListener() { @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { Toast.makeText(getApplicationContext(), tab.getText() + "取消选中了", Toast.LENGTH_SHORT).show(); } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { Toast.makeText(getApplicationContext(), tab.getText() + "选中了", Toast.LENGTH_SHORT).show(); } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { Toast.makeText(getApplicationContext(), tab.getText() + "重新选中了", Toast.LENGTH_SHORT).show(); } }); // 将tab添加到actionBar中 actionBar.addTab(tab);}
1.6、Action button的相关操作
1、创建Action Button
a) 创建Action button需要复写activity的 onCreateOptionsMenu()方法。
@Overridepublic boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); // 将布局挂在到menu上 menuInflater.inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu);}
b) 给menu创建对应的menu 的xml文件
c) 低版本适配说明:
在menu对应的xml文件的根节点,需要声明 自定义命名空间:
xmlns:jing="http://schemas.android.com/apk/res-auto"
item中的属性 showAction 命名空间需要设置成自定义的
d) ShowAction的取值说明:
- always : 总是显示
- ifroom : 如果放的下去,就显示(溢出菜单)
- never : 从不显示
- withText: 和文本一起显示
- collapseActionView: 折叠显示
e) Menu菜单的类型:
- Group菜单
- 子菜单
2、响应Action Button 事件
复写onOptionsItemSelected()响应item事件
@Overridepublic boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item);}
1.7、ActionBar Split显示
在清单文件中给Activity节点添加属性
android:uiOptions="splitActionBarWhenNarrow"
低版本支持时需要在Activity中添加meta元数据的支持
1.8、Action Mode
1、呼出Action Mode功能
startActionMode(callback);
低版本中:
startSupportActionMode(callback);
2、Action Mode的回调
public class MainActivity extends ActionBarActivity implements Callback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startSupportActionMode(this); } /**创建action mode时的回调*/ @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { getMenuInflater().inflate(R.menu.main, menu); // 返回true说明有action mode return true; } /**准备开始起时的回调*/ @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return true; } /**action mode中的item被点击时的回调*/ @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } /**action mode 销毁时的回调*/ @Override public void onDestroyActionMode(ActionMode mode) { Toast.makeText(this, "关闭了", Toast.LENGTH_SHORT).show(); }}
二、Notification
1.1、Notification的基本流程
状态通知栏主要涉及到2个类:Notification 和NotificationManager
Notification:通知信息类,它里面对应了通知栏的各个属性
NotificationManager:是状态栏通知的管理类,负责发通知、清除通知等操作。
使用的基本流程:
- Step 1. 获得NotificationManager对象: NotificationManager mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
- Step 2. 创建一个通知栏的Builder构造类: Notification.Builder mBuilder = new Notification.Builder(this);
- Step 3. 对Builder进行相关的设置,比如标题,内容,图标,动作等!
- Step 4.调用Builder的build()方法为notification赋值
- Step 5.调用NotificationManager的notify()方法发送通知!
- PS:另外我们还可以调用NotificationManager的cancel()方法取消通知
1.2、常用方法
setContentTitle(Charsequence):设置标题
setContentText(Charsequence):设置内容
setSubText(Charsequence):设置内容下面小行文字
setTicker(Charsequence):设置收到通知时在顶部显示的文字信息
setWhen(long):设置通知时间,一般设置的是收到通知时的System.currentTimeMillis()
setSmallIcon(Bitmap):设置左边的大图标
setAutoCancel(boolean):用户点击Notification点击面板后是否让通知取消(默认不取消)
setDefault(int):向通知添加声音、闪光和振动效果的最简单、使用默认(default)属性,可以组合多个属性:
Notification.DEFAULT_VIBRATE(添加默认震动提醒);
Notification.DEFAULT_SOUND(添加默认声音提醒);
Notification.DEFAULT_LIGHTS(添加默认三色灯提醒)
Notification.DEFAULT_ALL(添加默认以上3种全部提醒)
通知栏太操蛋,暂时不想整理。