1、在消息通知的时候,我们通常用到Notification跟Toast,现在多半是用前面那种方法,最典型的应用是未看到的短信跟未接来电显示,还有QQ微信等等。
下面是简单的通知栏的效果:
下面是一个简单activity的文件
package com.example.android_notification;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private Context mContext;
Bitmap LargeBitmap = null;
private NotificationManager mNManager;
private Notification.Builder mBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = MainActivity.this;
//创建大图标的Bitmap
LargeBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.aa);
mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
}
public void aa(View view){
//跳转到下一个activity中
// Intent intent = new Intent(mContext, LoadActivity.class);
// PendingIntent pit = PendingIntent.getActivity(mContext, 0, intent, 0);
//设置图片,通知标题,发送时间,提示方式等属性
mBuilder = new Notification.Builder(this);
// mBuilder.setSubText("——"); //内容下面的一小段文字
// mBuilder.setTicker("。。。。。~"); //收到信息后状态栏显示的文字信息
mBuilder.setWhen(System.currentTimeMillis()); //设置通知时间
mBuilder.setSmallIcon(R.drawable.aa); //设置小图标
mBuilder.setLargeIcon(LargeBitmap); //设置大图标
mBuilder.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE); //设置默认的三色灯与振动器
mBuilder.setDefaults(Notification.DEFAULT_SOUND);//获取默认铃声
// mBuilder.setAutoCancel(true); //设置点击后取消Notification
//跳到另外一个页面
// mBuilder.setContentIntent(pit);
Notification notify1 = mBuilder.build();
//通知标题
mBuilder.setContentTitle("病毒侵入中...");
//通知内容
//mBuilder.setContentText("病毒侵入中...");
mNManager.notify(0x110, notify1);
//增加一个进度条
mBuilder.setProgress(100,0,false);//初始为0
//给一个子线程
new Thread(){
@Override
public void run() {
super.run();
for (int i=1;i<=100;i++){
mBuilder.setProgress(100,i,false);
mNManager.notify(0x110, mBuilder.build());
mBuilder.setContentText("下载:"+i+"%");
try {
//模拟下载
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//下载完成后更改标题以及提示信息
mBuilder.setContentTitle("开始安装");
mBuilder.setContentText("安装中...");
//设置进度,用于模拟安装
mBuilder.setProgress(0,0,true);
mBuilder.build().flags=Notification.FLAG_NO_CLEAR;
mNManager.notify(0x110, mBuilder.build());
}
}.start();
}
}