实现结果如下
需要修改的地方有四个地方,
实现思想,
实现代码
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); } }