实现结果如下

需要修改的地方有四个地方,

实现思想,
实现代码
xml
<?xml version="1.0" encoding="utf-8"?>
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.xialm.message.MainActivity"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/button_sunny"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="晴空万里" />
<Button
android:id="@+id/button_cloud"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="阴云密布" />
<Button
android:id="@+id/button_rain"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="大雨连绵" />
</LinearLayout>
<Button
android:id="@+id/button_clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:text="清除Notification" />
</LinearLayout>
Java的逻辑代码
package com.example.xialm.message;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button btnclear,btncloud,btnsunny,btnrain;
//通知管理者
private NotificationManager nm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnclear = (Button)findViewById(R.id.button_clear);
btncloud = (Button)findViewById(R.id.button_cloud);
btnsunny = (Button)findViewById(R.id.button_sunny);
btnrain = (Button)findViewById(R.id.button_rain);
//系统服务都要getsystemservice,获得通知服务
nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
btnclear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//使用设置的id号
nm.cancel(1);
}
});
btncloud.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
displayWeather("阴天", "天气预报", "阴云密布",R.drawable.cloud,1);
}
});
btnrain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
displayWeather("雨", "天气预报", "大雨连绵", R.drawable.rain,2);
}
});
btnsunny.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
displayWeather("晴", "天气预报", "太阳真毒奥", R.drawable.sun,3);
}
});
}
//闪烁的字是ticktext,拽下来看到的标题是title,内容,图片
//意思是在这里设置好了之后,在点击事件的时候直接调用display(众多参数)就可以了
private void displayWeather(String tickerText,String title,String content,int drawable,int id){
//一个消息创建的实例
Notification.Builder builder = new Notification.Builder(MainActivity.this);
//为上面的消息配置一个样式
//1.小图标
builder.setSmallIcon(drawable);
//2.闪烁的时候闪一下什么
builder.setTicker(tickerText);
//显示标题是什么
builder.setContentTitle(title);
//显示的内容是什么
builder.setContentText(content);
//获得当前的系统时间
builder.setWhen(System.currentTimeMillis());
//缺省模式,全部采用默认
//注意在这里设置选择了全部默认,但是默认的值中振动是被选中的,
//所以一会还需要去mainfest中进行振动权限的打开
//<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
builder.setDefaults(Notification.DEFAULT_ALL);
//打开图标之后是不是自动消失
builder.setAutoCancel(true);
//造一个Intent为了传给PendingIntent
Intent intent = new Intent(this,MainActivity.class);
//PendingIntent意思是未决定的行将发生的的一个Intent,是一个可以脱离了activity存在的Intent
//其他的Intent存在的条件是activity仍在运行着,
//由于现在的用途是作为上面弹出来的这么一个Intent那么他就要存在且不依附activity
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
//为现在创建的对象进行设置Intent
builder.setContentIntent(pendingIntent);
//创建对象。
Notification nn = builder.getNotification();
//通知管理者发布,开始进行发布,
// 第一个id号的设置如果是一样的话,那么发送一个之后再发送一个的话会重合,
//如果不一样就会叠加,即都显示到手机的通知栏里面,
nm.notify(id,nn);
}
}