设置相关的一些方法 ; setDefaults(int) · 属性, 说明. Notification.DEFAULT_VIBRATE, 添加默认震动提醒 ; setContentIntent(PendingIntent) · 值, 说明. FLAG_ONE_SHOT ...
←AndroidToast吐司
AndroidAlertDialog弹出框→
AndroidNotification状态栏通知
Notification(状态栏通知)估计是最常见的,比微信还常见,在现在的智能机从屏幕顶部往下滑,看到的比比皆是
我们先来看看状态栏通知的基本组成
Notification的基本布局
组成元素
说明
Icon/Photo
大图标
Title/Name
标题
Message
内容信息
Timestamp
通知时间,默认是发出通知的时间,可以通过setWhen()设置
SecondaryIcon
小图标
内容文字
在小图标的左手边的一个文字
这个布局是我们最常见的,当然还有一些其它布局,不过都是在最基础的布局上扩展而来饿
扩展布局
我们可以通过扩展布局显示消息的前几行或者图片的预览
这样用户可以看多更多的内容-有时甚至可以看到整个消息
用户可以通过pinch-zoom或者双手指滑动来打开扩展布局
Android为单条消息提供了两种扩展布局(文字和图像)供你开发应用时使用
Notification(状态栏通知)
状态通知栏主要涉及到2个类Notification和NotificationManager
类
说明
Notification
通知信息类,它里面对应了通知栏的各个属性
NotificationManager
是状态栏通知的管理类,负责发通知、清除通知等操作
使用的基本流程
获得NotificationManager对象
NotificationManagermNManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
创建一个通知栏的Builder构造类
Notification.BuildermBuilder=newNotification.Builder(this);
对mBuilder进行相关的设置,比如标题,内容,图标,动作等
调用mBuilder.build()方法为notification赋值
调用NotificationManager.notify()方法发送通知
另外我们还可以调用NotificationManager.cancel()方法取消通知
设置相关的一些方法
首先我们要创建一个Builder
Notification.BuildermBuilder=newNotification.Builder(this);
后再调用下述的相关的方法进行设置
方法
说明
setContentTitle(CharSequence)
设置标题
setContentText(CharSequence)
设置内容
setSubText(CharSequence)
设置内容下面一小行的文字,API16+才可以用
setTicker(CharSequence)
设置收到通知时在顶部显示的文字信息
setWhen(long)
设置通知时间,一般设置的是收到通知时的System.currentTimeMillis()
setSmallIcon(int)
设置右下角的小图标,在接收到通知的时候顶部也会显示这个小图标
setLargeIcon(Bitmap)
设置左边的大图标
setAutoCancel(boolean)
用户点击Notification点击面板后是否让通知取消(默认不取消)
还可以调用其它方法
setDefaults(int)
向通知添加声音、闪灯和振动效果的最简单方法是使用默认(defaults)属性
可以组合多个属性
属性
说明
Notification.DEFAULT_VIBRATE
添加默认震动提醒
Notification.DEFAULT_SOUND
添加默认声音提醒
Notification.DEFAULT_LIGHTS
添加默认三色灯提醒
Notification.DEFAULT_ALL
添加默认以上3种全部提醒
setVibrate(long[])
设置振动方式,比如
setVibrate(newlong[]{0,300,500,700});
延迟0ms,然后振动300ms,在延迟500ms,接着再振动700ms
setLights(intargb,intonMs,intoffMs)
设置三色灯,参数依次是:灯光颜色,亮持续时间,暗的时间
不是所有颜色都可以,这跟设备有关,有些手机还不带三色灯
另外,还需要为Notification设置flags为Notification.FLAG_SHOW_LIGHTS才支持三色灯提醒
setSound(Uri)
设置接收到通知时的铃声,可以用系统的,也可以自己设置
获取默认铃声
.setDefaults(Notification.DEFAULT_SOUND)
获取自定义铃声
.setSound(Uri.parse("file:///sdcard/xx/xx.mp3"))
获取Android多媒体库内的铃声
.setSound(Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI,"5"))
setOngoing(boolean)
设置为ture,表示它为一个正在进行的通知
他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)
setProgress(int,int,boolean)
设置带进度条的通知
参数依次为:进度条最大数值,当前进度,进度是否不确定
如果为确定的进度条:调用setProgress(max,progress,false)来设置通知,在更新进度的时候在此发起通知更新progress,并且在下载完成后要移除进度条,通过调用setProgress(0,0,false)既可
如果为不确定(持续活动)的进度条,这是在处理进度无法准确获知时显示活动正在持续,所以调用setProgress(0,0,true),操作结束时,调用setProgress(0,0,false)并更新通知以移除指示条
setContentIntent(PendingIntent)
PendingIntent和Intent略有不同,它可以设置执行次数,主要用于远程服务通信、闹铃、通知、启动器、短信中,在一般情况下用的比较少
比如这里通过Pending启动Activity
getActivity(Context,int,Intent,int)
当然还可以启动Service或者Broadcast
PendingIntent的位标识符(第四个参数)可以是以下值值之一
值
说明
FLAG_ONE_SHOT
表示返回的PendingIntent仅能执行一次,执行完后自动取消
FLAG_NO_CREATE
表示如果描述的PendingIntent不存在,并不创建相应的PendingIntent,而是返回NULL
FLAG_CANCEL_CURRENT
表示相应的PendingIntent已经存在,则取消前者,然后创建新的PendingIntent,这个有利于数据保持为最新的,可以用于即时通信的通信场景
FLAG_UPDATE_CURRENT
表示更新的PendingIntent
使用示例
//点击后跳转Activity
Intentintent=newIntent(context,XXX.class);
PendingIntentpendingIntent=PendingIntent.getActivity(context,0,intent,0);
mBuilder.setContentIntent(pendingIntent)
setPriority(int)
设置优先级
优先级
用户
MAX
重要而紧急的通知,通知用户这个事件是时间上紧迫的或者需要立即处理的
HIGH
高优先级用于重要的通信内容,例如短消息或者聊天,这些都是对用户来说比较有兴趣的
DEFAULT
默认优先级用于没有特殊优先级分类的通知
LOW
低优先级可以通知用户但又不是很紧急的事件
MIN
用于后台消息(例如天气或者位置信息)。
最低优先级通知将只在状态栏显示图标,只有用户下拉通知抽屉才能看到内容
对应属性:Notification.PRIORITY_HIGH
最常见的Notification
下面我们就来创建一个最常见的通知
创建一个空的Android项目cn.twle.android.Notification
在API版本选择界面选择(API16Android4.1+)
下载/static/i/android/app_icon.zip解压并把所有目录和文件拖到res目录下覆盖原目录
修改activity_main.xml添加两个按钮
在res/layout目录下创建一个点击通知弹出的界面布局notify_detail.xml
很简单的一个布局,就是一个文本框TextView
在MainActivity.java同一个目录下创建一个通知详情页的NotifyDetailActivity.java
packagecn.twle.android.notification;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
publicclassNotifyDetailActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.notify_detail);
}
}
没啥好说,代码都简单到极点了
然后修改AndroidManifest.xml注册NotifyDetailActivity
修改MainActivity.java
packagecn.twle.android.notification;
importandroid.app.Notification;
importandroid.app.NotificationManager;
importandroid.app.PendingIntent;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.net.Uri;
importandroid.support.v7.app.AppCompatActivity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.widget.Button;
publicclassMainActivityextendsAppCompatActivityimplementsView.OnClickListener{
privateContextmContext;
privateNotificationManagermNManager;
privateNotificationnotify1;
BitmapLargeBitmap=null;
privatestaticfinalintNOTIFYID_1=1;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext=MainActivity.this;
//创建大图标的Bitmap
LargeBitmap=BitmapFactory.decodeResource(getResources(),R.drawable.app_icon_128x128);
mNManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Buttonbtn_pop_no=(Button)findViewById(R.id.btn_pop_no);
Buttonbtn_clear_no=(Button)findViewById(R.id.btn_clear_no);
btn_pop_no.setOnClickListener(this);
btn_clear_no.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv){
switch(v.getId()){
caseR.id.btn_pop_no:
//定义一个PendingIntent点击Notification后启动一个Activity
Intentit=newIntent(mContext,NotifyDetailActivity.class);
PendingIntentpit=PendingIntent.getActivity(mContext,0,it,0);
//设置图片,通知标题,发送时间,提示方式等属性
Notification.BuildermBuilder=newNotification.Builder(this);
//标题
mBuilder.setContentTitle("简单教程")
.setContentText("Android基础教程上线啦")//内容
.setSubText("简单教程,简单编程")//内容下面的一小段文字
.setTicker("简单教程上线啦.......")//收到信息后状态栏显示的文字信息
.setWhen(System.currentTimeMillis())//设置通知时间
.setSmallIcon(R.drawable.app_icon_32x32)//设置小图标
.setLargeIcon(LargeBitmap)//设置大图标
.setDefaults(Notification.DEFAULT_LIGHTS|Notification.DEFAULT_VIBRATE)//设置默认的三色灯与振动器
.setSound(Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.sms))//设置自定义的提示音
.setAutoCancel(true)//设置点击后取消Notification
.setContentIntent(pit);//设置PendingIntent
notify1=mBuilder.build();
mNManager.notify(NOTIFYID_1,notify1);
break;
caseR.id.btn_clear_no:
//除了可以根据ID来取消Notification外,还可以调用·cancelAll();关闭该应用产生的所有通知
//取消Notification
mNManager.cancel(NOTIFYID_1);
break;
}
}
}
参考文档
设计思想:NotificationsinAndroid4.4andLower
译文:通知
API文档:Notification
Android通知栏Notification的整合全面学习(一个DEMO让你完全了解它)
Notification.Builder官方API文档
←AndroidToast吐司
AndroidAlertDialog弹出框→
Android基础教程
Android基础教程
Android简介
Android平台架构
Android术语
AndroidJava环境配置
AndroidStudio安装与配置
AndroidStudio创建项目
Android第一个程序HelloWorld
AndroidAVD模拟器
Android命令行启动AVD模拟器
Android导出APP测试包
Androidadb安装APP
Android构建正式签名包
Android构建正式不签名包
Android最简工程项目介绍
Android最简工程基本文件介绍
Android最简工程资源目录介绍
Android反编译APK获取资源
dex2jar转换.dex为jar文件
Android反编译APK获取代码和资源
apktool反编译APK获取资源
AndroidUserInterface用户界面
AndroidView
AndroidViewGroup
AndroidUnits单位
AndroidLayout布局
AndroidLinearLayout线性布局
AndroidLinearLayout线性布局2
AndroidLinearLayout线性布局3
AndroidLinearLayout线性布局4
AndroidRelativeLayout相对布局
TableLayout(表格布局)
AndroidFrameLayout(帧布局)
AndroidGridLayout(网格布局)
AndroidAbsoluteLayout绝对布局
AndroidConstraintLayout约束布局
AndroidConstraintLayout约束布局
AndroidConstraintLayout约束布局
AndroidConstraintLayout约束布局
AndroidConstraintLayout约束布局
AndroidConstraintLayout约束布局
AndroidConstraintLayout约束布局
AndroidConstraintLayout约束布局
AndroidConstraintLayout约束布局
AndroidTextView文本框
AndroidTextView文本框
AndroidTextView文本框
AndroidTextView文本框
AndroidTextView文本框
AndroidTextView文本框
AndroidTextView文本框
AndroidTextView文本框
AndroidTextView文本框
AndroidEditText输入框
AndroidEditText输入框
AndroidEditText输入框
AndroidEditText输入框
AndroidEditText输入框
AndroidImageView图像视图
AndroidImageView图像视图
AndroidImageView图像视图
Android.9图片
AndroidButton按钮
AndroidButton按钮自制水波效果
AndroidImageButton图片按钮
AndroidRadioButton单选按钮
AndroidRadioGroup单选按钮组
AndroidCheckBox复选框
AndroidToggleButton开关按钮
AndroidSwitch开关
AndroidProgressBar进度条
AndroidProgressBar动图替代圆形进度条
AndroidProgressBar自定义圆环进度条
SeekBar(拖动条)控件
AndroidRatingBar星级评分条
AndroidScrollView滚动视图
AndroidTextClock文本时钟控件
AndroidAnalogClock控件
AndroidChronometer计时器
AndroidDatePicker日期选择器
AndroidTimePicker时间选择器
AndroidCalendarView日历视图
AndroidAdapter适配器
Android自定义Adapter
AndroidListView列表控件
Android自定义BaseAdapter
AndroidListView的焦点问题
AndroidListViewCheckbox混乱
AndroidListView添加插入数据
AndroidListView删除数据
AndroidListView删除数据
AndroidListView更改数据
Android可复用BaseAdapter
AndroidListView聊天界面
AndroidGridView网格视图
AndroidSpinner下拉选项框
AndroidAutoCompleteTextView自动完成文本框
AndroidMultiAutoCompleteTextView
AndroidExpandableListView分组列表
AndroidViewFlipper翻转视图
AndroidViewFlipper翻转视图2
AndroidToast吐司
AndroidNotification状态栏通知
AndroidAlertDialog弹出框
AndroidAlertDialog弹出框
AndroidProgressDialog(进度条对话框)
AndroidDatePickerDialog日期选择对话框
AndroidTimePickerDialog时间选择对话框
AndroidPopupWindow悬浮框
AndroidOptionMenu选项菜单
AndroidContextMenu上下文菜单
AndroidSubMenu子菜单
AndroidPopupMenu弹出菜单
AndroidViewPager(页面切换组件)
AndroidViewPager页面切换组件2
AndroidViewPager(页面切换组件)
AndroidViewPager实现TabHost的效果
AndroidDrawerLayout侧滑菜单
AndroidDrawerLayout左右侧滑菜单
Android事件机制-监听
AndroidTouchListener
Android事件机制-回调
AndroidonTouchEvent()
AndroidMotionEvent多点触碰
AndroidTextWatcher
Android消息传递-Handler
AndroidAsyncTask异步任务
AndroidGesture手势
AndroidGesture手势添加与识别
AndroidActivity
AndroidActivity
AndroidActivity状态保存
Android系统内置Activity
AndroidActivity数据传递
Activity,Window与View
AndroidService(服务)
AndroidService(服务)
Android非绑定Service
Android绑定Service
AndroidService(服务)
AndroidIntentService耗时操作
AndroidService与Activity通讯
AndroidServiceAlarm定时广播
AndroidIBinder
AndroidServiceAIDL
AndroidServieAIDL复杂数据
AndroidServiceBinder跨进程通信
Android5.0+Service一些改变
AndroidBroadcastReceiver接收广播
AndroidBroadcastReceiver发送广播
AndroidLocalBroadcast本地广播
AndroidBroadcastReceiver开机广播
AndroidBroadcastReceiver系统广播
AndroidContentProvider内容提供者
Android系统内建的ContentProvider
Android自定义ContentProvider
ContentProviderContentObserver
Android更多Provider
StorageAccessFramework(SAF)
AndroidDocumentsProvider自定义
AndroidIntent意图
Android显式Intent
Android隐式Intent
Android内置的Intent
AndroidIntent传递简单数据
AndroidIntent传递数组
AndroidIntent传递集合
AndroidIntent传递对象
AndroidIntent传参-Bitmap
AndroidIntent传参-Application对象
AndroidIntent单例模式传参
AndroidFragment
Android创建Fragment
Android动态加载Fragment
AndroidFragment管理
AndroidFragment与Activity的交互
AndroidFragment
Fragment+TextView实现底部导航栏
FragmentRadioButton实现底部导航栏
Fragment底部导航栏红点
ViewPager简单介绍
AndroidFragment楚楚街商品列表效果
Android文件存储与读写
AndroidAPP包下的读写文件
Android读取SD卡上的文件
Android模拟器AVDSD卡问题
Android读取raw和assets目录
SharedPreference保存用户数据
AndroidSharedPreference保存用户数据
读写其它APP的SharedPreference
AndroidSharedPreferenceMD5哈希校验
AndroidSharedPreference帮助类
AndroidSQLite数据库
AndroidSQLite创建数据库
Android使用系统API操作SQLite数据库
Android如何查看SQLite数据库
AndroidSQLite使用SQL语句操作数据库
AndroidSQLite事务
SQLiteSimpleCursorAdapter适配器
AndroidSQLite存储大文件
AndroidSQLite升级数据版本
HTTP协议简读
HTTP请求头和响应头
AndroidHttpURLConnection
AndroidHttpURLConnectionGET请求
AndroidHttpURLConnection
AndroidHttpURLConnectionCookie
AndroidHttpURLConnection
AndroidXML数据解析
AndroidXMLSAX数据解析
AndroidXMLDOM解析XML
AndroidXMLPULL数据解析
AndroidXMLPULL生成XML
AndroidJSON数据解析
AndroidHttpConnection文件上传
Android下载文件
Android多线程下载文件
Android多线程断点续传下载
AndroidDownloadManager更新应用
AndroidWebView
AndroidWebView滚动监听(回到顶部)
AndroidWebView简单的浏览器
AndroidWebView设置滚动条
AndroidWebView设置缩放以及自适应
AndroidWebView获取Cookie
AndroidWebView同步Cookie
AndroidWebViewJavaScript交互
WebViewAPP调用JavaScript方法
Android4.4后WebView的改变
WebViewsetDownloadListener()下载文件
AndroidWebView缓存
AndroidonReceivedError()定制出错界面
AndroidSocketTCP/IPUDP
AndroidTCP协议Socket通信
AndroidTCPSocket聊天室
AndroidTcpSocket大文件续传
AndroidUDPSocket网络通讯
AndroidDrawable
AndroidColorDrawableDrawable
AndroidNiewPatchDrawable
AndroidShapeDrawable
AndroidGradientDrawable
AndroidBitmapDrawable
AndroidInsetDrawable
AndroidClipDrawable
AndroidRotateDrawable
AndroidAnimationDrawable
AndroidLayerDrawable
AndroidTransitionDrawable
AndroidLevelListDrawable
AndroidStateListDrawable
AndroidGraphics图形库
AndroidBitmap位图
AndroidBitmap截屏
AndroidPaintCanvasPath
AndroidBitmapPaint绘图范例
AndroidsetMaskFilter
AndroidPaintsetXfermode
AndroidPaintPorterDuffXfermode
AndroidPorterDuff圆形和圆角ImageView
AndroidPorterDuff.Mode.DST_OUT刮彩票
AndroidProterDuff文字加载效果
AndroidColorMatrixColorFilter
AndroidColorMatrixColorFilter处理图像
AndroidLightingColorFilter光照色彩颜色滤镜
AndroidPorterDuffColorFilter颜色混合滤镜
AndroidPaintPathEffect路径效果
AndroidPaintShader图像渲染
AndroidPaint枚举/常量
AndroidPaintShadowLayer设置阴影效果
AndroidTypeface(字型)
AndroidCanvasAPI
AndroidCanvastranslate()平移
AndroidCanvasrotate()旋转
AndroidCanvasscale()缩放
AndroidCanvasskew()倾斜
AndroidCanvasLayer图层
CanvassaveLayer()与restoreToCount()
AndroidCanvasclipRect()矩形裁剪
AndroidCanvasClip裁剪
AndroidCanvas矩阵变换Matrix
Canvas扭曲图像drawBitmapMesh
AndroidFrameAnimation帧动画
AndroidAnimationDrawable
AndroidTweenAnimation补间动画
Android监听动画状态
Android为View设置过渡动画
AndroidFrame设置过场动画
AndroidActivity设置过场动画
AndroidTweenAnimation补间动画
AndroidPropertyAnimation属性动画
Android属性动画ObjectAnimator
Android组合动画
AndroidAnimatorListener
Android使用XML来编写动画
Android属性动画Evaluator
Android动画补间器Interpolator
Android动画自定义补间器Interpolator
ViewPropertyAnimator视图属性动画
AndroidSoundPool播放音效
AndroidMediaPlayer播放音频
AndroidMediaPlayer播放视频
AndroidVideoView播放视频
AndroidCamera拍照
AndroidCamera自定义拍照界面
AndroidMediaRecorder录音器
AndroidTelephonyManager(电话管理器)
AndroidTelephonyManager信号强度
TelephonyManager监听所有手机来电
TelephonyManager黑名单来电自动挂断
AndroidSmsManager(短信管理器)
AndroidSmsManager调用接口发短信
AndroidAudioManager音频管理器
AndroidVibrator振动器
AndroidAlarmManager闹钟服务
Android电源服务(PowerManager)
WindowManager窗口管理服务
WindowManager悬浮窗口
AndroidLayoutInflater布局服务
WallpaperManager壁纸管理器
Android传感器
Android传感器的一般使用流程
方向传感器
Android加速度传感器(Accelerometersensor)
Android陀螺仪传感器(Gyroscopesensor)
Android其它传感器
AndroidGPS(全球定位)
AndroidGPS可用位置提供者
AndroidGPS动态获取地理位置
AndroidGPS临近警告(地理围栏)
Android基础教程总结
AndroidSDK安装
AndroidConfiguration手机配置信息
AndroidBitmapOOM问题
ContentProviderAndroid4.4+变更
AndroidSDKadb工具
AndroidSDK更新不了的问题
关于 | FAQ | 我们的愿景 | 广告投放 | 博客
♥ 简单教程,简单编程-IT入门首选站
Copyright©2013-2022简单教程twle.cnAllRightsReserved.