博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
21、ActionBar & Notification
阅读量:6869 次
发布时间:2019-06-26

本文共 6277 字,大约阅读时间需要 20 分钟。

一、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.XXX

1.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 List
objects = 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 List
mTabs = 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种全部提醒)

通知栏太操蛋,暂时不想整理。

转载于:https://www.cnblogs.com/pengjingya/p/5509216.html

你可能感兴趣的文章
silverlight 如何在浏览器的新页面里打开一个xaml
查看>>
SQL Tuning Advisor使用实例
查看>>
server-U上传中文文件乱码
查看>>
编程珠玑:用后缀数组寻找最长重复字符串
查看>>
Java写到.txt文件,如何实现换行
查看>>
通过http proxy访问git 服务
查看>>
JavaScript之isNaN()函数讲解
查看>>
MPlayer源代码分析
查看>>
获取音视频文件AVMetadata数据
查看>>
sql serve 创建序列
查看>>
模型层的生成
查看>>
关于APP接口设计
查看>>
【VI】如何再执行上一个(历史)命令(已解决)
查看>>
KendoUI系列:DropDownList
查看>>
Axure7.0汉化方法
查看>>
我的MYSQL学习心得(九)
查看>>
JavaScript高级程序设计学习笔记--DOM
查看>>
Python易学就会(五)turtle绘制椭圆与递归
查看>>
echarts map地图设置外边框或者阴影
查看>>
webpack4学习总结
查看>>