结构图:

MainActivity.java

package com.qf.day22_notification;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import android.widget.RemoteViews; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} // 普通的通知
public void MyClick01(View v){ //获取通知对象
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this); //必有属性 必须要写 哪怕你不用 builder.setSmallIcon(R.drawable.image1);//图标
//其他属性
//发送通知的时间 是指显示的时间不是定时发送builder.setWhen(System.currentTimeMillis());
Bitmap bp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
builder.setLargeIcon(bp);
builder.setContentInfo("信息");
builder.setContentTitle("标题");//标题
builder.setContentText("内容hgcdakhgflasfgldsafgldguli iueroewyurhwehfldiufhlaskjfglsadfglksFGLSdjgflasdgflahgjkfdshg;hg;efgh");//内容 Intent intent = new Intent(MainActivity.this, SecondActivity.class);
/**
*
* 延迟意图 等待你的点击
* 参数1:上下文
* 参数2:请求码
* 参数3:跳转的意图
* 参数4:标记
*/
PendingIntent pendIntent = PendingIntent.getActivity
(MainActivity.this, 100, intent, PendingIntent.FLAG_ONE_SHOT); builder.setContentIntent(pendIntent); //获取通知的管理者对象
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); //使用管理者让通知展示
manager.notify(1, builder.build()); } //大视图通知 小米显示miui系统好像有问题
public void MyClick02(View v){ NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext());
builder.setContentText("快放假了");
builder.setContentTitle("十一");
builder.setSmallIcon(R.drawable.f020); //视图样式
NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
style.addLine("还有好多天");
style.addLine("等等就到了");
style.addLine("是啊");
style.addLine("恩");
builder.setStyle(style); NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(2, builder.build()); } //大视图通知(大图片) 小米显示miui系统好像有问题
public void MyClick03(View v){
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext());
builder.setContentTitle("新闻");
builder.setContentText("中彩票了");
builder.setSmallIcon(R.drawable.f020); //大图片 视图样式
NotificationCompat.BigPictureStyle style = new NotificationCompat.BigPictureStyle();
//大图片
style.bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.ccc));
style.setSummaryText("菜谱");
builder.setStyle(style); NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(3, builder.build()); } //带进度条的通知
public void MyClick04(View v){ final NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext());
builder.setContentTitle("昨天晚上下雨了");
builder.setContentText("早上起来 地干了");
builder.setSmallIcon(R.drawable.f020); final NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); //模仿下载
new Thread(){
public void run() {
//每次下载5%
for(int i=0;i<=100;i+=5){
/**
* 设置进度
* 参数1:最大的进度
* 参数2:当前进度
* 参数3:标志 进度条的样式 false :有明确进度 true:没有明确进度
*/
builder.setProgress(100, i, false);
manager.notify(4, builder.build()); try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//下载完展示
builder.setContentText("下载完成");
manager.notify(4, builder.build());
};
}.start(); } //自定义通知
public void MyClick05(View v){
NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext()); builder.setContentTitle("疯狗咬人");
builder.setSmallIcon(R.drawable.ic_launcher);
//
//VIew 将xml布局转换成View对象
RemoteViews rViews = new RemoteViews(getPackageName(), R.layout.rviews_layout);
//自身的方法设置内容
rViews.setTextViewText(R.id.tv, "咬了十几个");
rViews.setImageViewResource(R.id.iv, R.drawable.f020);
builder.setContent(rViews); NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(5, builder.build()); } }

SecondActivity.java

package com.qf.day22_notification;

import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Bundle; public class SecondActivity extends Activity{ @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.layout); //获取通知的管理者对象
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// manager.cancel(1);//根据标识 去关闭通知
manager.cancelAll();// 关闭所有通知
} }

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <Button
android:onClick="MyClick01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="普通的Notification"
/>
<Button
android:onClick="MyClick02"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="大视图Notification"
/>
<Button
android:onClick="MyClick03"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="大视图(大图片)Notification"
/>
<Button
android:onClick="MyClick04"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="带进度条Notification"
/>
<Button
android:onClick="MyClick05"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="自定义Notification"
/> </LinearLayout>

layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第二个Activity"
/> </LinearLayout>

rviews_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="第二个Activity"
/> </LinearLayout>
  • 对应样式图:

对应按钮顺序






* 有明确进度条样式 false



无明确进度条样式true 一直滑动



22 Notification 通知栏代码的更多相关文章

  1. Notification通知栏

    Notification通知栏 首先实现的功能就是通知栏显示Notification,Notification是显示在系统的通知栏上面的,所以Notification 是属于进程之前的通讯.进程之间的 ...

  2. phpcms v9最常用的22个调用代码

    新源网络工作室友情总结phpcms v9最常用的22个调用代码: 调用最新文章,带所在版块{pc:get sql="SELECT a.title, a.catid, b.catid, b.c ...

  3. android自定义Notification通知栏实例

    项目有个需求,需要在发送Notification的时候动态给定url的图片.大概思路如下:自己定义一个Notification的布局文件,这样能够很方便设置View的属性. 首先加载网络图片,使用Bi ...

  4. Notification通知栏的使用

    一.基础的知识了解 1.pendingIntent : 它是Intent的封装,可以跳转某个Activity.给Service发送一个命令.还可以发送一个广播 2.进度条的使用方法 3.更新通知栏的信 ...

  5. Android学习(二十)Notification通知栏

    一.通知栏的内容 1.图标 2.标题 3.内容 4.时间 5.点击后的相应 二.如何实现通知栏 1.获取NotificationManager. 2.显示通知栏:notify(id,notificat ...

  6. android学习笔记22——Notification

    Notification ==> Notification是显示在手机状态栏的消息,位于手机屏幕的最上方: 一般显示手机当前网络.电池状态.时间等: Notification所代表的是一种全局效 ...

  7. 安卓开发笔记——Notification通知栏

    当用户有没有接到的电话的时候,Android顶部状态栏里就会出现一个小图标.提示用户有没有处理的快讯,当拖动状态栏时,可以查看这些快讯.Android给我们提供了NotificationManager ...

  8. Android Notification通知栏的使用,通知栏在Android8.0系统不显示的问题;

    1.正常使用通知栏: /** * 创建通知栏管理工具 */ NotificationManager notificationManager = (NotificationManager) getSys ...

  9. Notification通知代码简洁使用

    1.自定义发送 Notification 的使用 1.1 通知(消息)的创建 ---------------详细介绍篇 // 不带消息内容 NSNotification *notification1 ...

随机推荐

  1. 06_Linux目录文件操作命令3查找命令_我的Linux之路

    上几节已经大致跟大家说了在Linux端文件目录操作的一些命令 这篇随笔,我们继续来学习对文件目录的操作命令 对文件或目录进行查找的命令 find 指定目录下查找文件 find(选项)(参数) find ...

  2. 分析 ajax 请求并抓取今日头条街拍美图

    首先分析街拍图集的网页请求头部: 在 preview 选项卡我们可以找到 json 文件,分析 data 选项,找到我们要找到的图集地址 article_url: 选中其中一张图片,分析 json 请 ...

  3. 使用C# (.NET Core) 实现组合设计模式 (Composite Pattern)

    本文的概念性内容来自深入浅出设计模式一书. 本文需结合上一篇文章(使用C# (.NET Core) 实现迭代器设计模式)一起看. 上一篇文章我们研究了多个菜单一起使用的问题. 需求变更 就当我们感觉我 ...

  4. Codeforces 343E Pumping Stations

    Description 题面 题目大意:求一个排列 \(P\),使得 \(\sum_{i=1}^{n-1}maxflow(P_i,P_{i+1})\) 尽量大 Solution 构造出最小割树,那么第 ...

  5. ●BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2002 题解: LCT 如果把弹跳的起点和终点连一条边,弹出去的与n+1号点连边, 则不难发现 ...

  6. [ HOJ 2713]Matrix1[网络流] 最大点权独立集问题

    题目大意: 一个 N*M 的网格,每个单元都有一块价值 Cij 的宝石.问最多能取多少价值的宝石且任意两块宝石不相邻.(1 <= N, M <= 50, 0 <= Cij <= ...

  7. 使用word

    同样这也是生活中常用到的办公软件,word本质是一个排版软件,它与一般的编辑器不同的是,它将整个文本分成了一页一页的,当然这也是方便于打印文档. 使用word还是很容易的,一般来说需要注意以下几方面的 ...

  8. PLSQL(2)

      游标                      [1] 不带参数的游标 -- 取出EMP表中的所有人名字 DECLARE CURSOR C IS SELECT * FROM EMP; V_EMP ...

  9. Day 1 Python简单程序

    一.高级语言和低级语言   最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果.后来为了方便记忆,就将用0.1序列表示的机器指令都用符号助记 ...

  10. MySQL数据库常用操作入门

    一.MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品.在WEB应用方面,MySQL是最好的RDBMS应用软件.MySQL体积小.速度快.总 ...