PS:看了9年的小说,自己开始动手写了一本,请各位猿们动动手指,点击下,有起点账号的可以收藏下!!《武意长存》
在Android中使用通知栏的方式通知用户是一种比较常用和友好的方式。
在4.1.2之后创建Notification的使用方式如下:
1.显示通知
// 设置通知的属性,至少包含一个小图标、标题、内容
builder = new Builder(this);
builder.setTicker("有短信来了");
builder.setSmallIcon(R.drawable.ic_launcher);
builder.setContentTitle("晚上有时间吗?");
builder.setContentText("老地方见!");
/*
* 表示发送一个Notification的所携带的效果
DEFAULT_ALL 使用默认字段
DEFAULT_LIGHTS 默认闪光
DEFAULT_SOUND 默认声音(uri,指向路径)
DEFAULT_VIRATE 默认震动,后来得知需要添加震动权限VIBRATE: android.permission.VIBRATE
*/
builder.setDefaults(Notification.DEFAULT_SOUND); // 用来设置用默认的声音或振动
this.nm = (NotificationManager) this
.getSystemService(Context.NOTIFICATION_SERVICE);
this.bt1 = (Button) this.findViewById(R.id.bt1);
this.bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,
MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
MainActivity.this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(pendingIntent);
// nm.notify(0, builder.build());
builder.setAutoCancel(true); //点击一个通知后,通知会消失
//第一个参数是用来标识一个通知(简单的说就是通知的id)
nm.notify((int) System.currentTimeMillis(), builder.build());
}
});
2.清除通知
<pre name="code" class="java">
this.bt3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// nm.cancel(id); //清除指定id的通知
nm.cancelAll(); //清楚全部通知
}
});
3.带有进度条的通知
this.bt4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final NotificationCompat.Builder builder = new NotificationCompat.Builder(
MainActivity.this);
builder.setSmallIcon(R.drawable.ic_launcher)
.setTicker("xxx")
.setContentTitle("Picture Download")
.setContentText("Download in progress");
Intent intent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(pendingIntent);
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0; i<100; i++){
builder.setProgress(100, i, false);
nm.notify(0, builder.build());<span style="white-space:pre"> </span>//由于notification的id相同,所以会覆盖掉上一个通知
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO: handle exception
}
}
builder.setContentText("Download is completed");
nm.notify(0, builder.build());
}
}).start();
}
});
4.自定义通知
<span style="white-space:pre"> </span>this.bt5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
//不管是否是自定义通知,必须先设置一下内容
builder.setTicker("有短信来了")
.setContentTitle("xxx")
.setContentText("xxxxx")
.setSmallIcon(R.drawable.ic_launcher);
RemoteViews content = new RemoteViews(getPackageName(), R.layout.notification);
content.setTextViewText(R.id.tv_title, "晚上有时间吗?");
content.setTextViewText(R.id.tv_content, "老地方见!");
content.setImageViewResource(R.id.iv, R.drawable.a);
builder.setContent(content);
Intent intent = new Intent(MainActivity.this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(pendingIntent);
nm.notify(3, builder.build());
}
});
/layout/notification.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="horizontal" >
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
看了9年的小说,自己开始动手写了一本,请各位猿们动动手指,点击下,有起点账号的可以收藏下!!