Android Notification 状态栏通知 - 简单教程

文章推薦指數: 80 %
投票人數:10人

设置相关的一些方法 ; 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.



請為這篇文章評分?