Android中Notification的使用

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年的小说,自己开始动手写了一本,请各位猿们动动手指,点击下,有起点账号的可以收藏下!!

《武意长存》


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值