Android中的通知notification

     有时候我们在玩QQ,或者其他的一些功能时候,在我们的手机上面会出现一些通知。类似于下面的。

    

        创建一条基本的通知

      android中如何实现自己定义的通知呢?其实非常的简单,它是我们手机里面的的一个服务。我们只要开启这种服务就可以了。下面代码演示一个最简单的通知,效果图如上。

          新建一个项目NotificationTest,然后在布局文件当中定义一个按钮用于发送一个通知。代码如下。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);     
    }
    
    public void doClick(View view){
    	switch (view.getId()) {
		case R.id.send:
			NotificationManager manager;
	    	//取得发送通知的管理器
	        manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
	    	
	        //创建一个通知
	        Notification notification=new NotificationCompat.Builder(MainActivity.this)
	    	.setContentTitle("通知的标题")
	    	.setContentText("通知的内容")
	    	.setWhen(System.currentTimeMillis())
	    	.setSmallIcon(R.drawable.ic_launcher)
	    	.build();
	        
	        //通过管理器发送通知
	        manager.notify(1, notification);
			break;
		}

    }
    
}
         首先拿到我们的通知管理器在我们系统服务当中,然后定义我们的通知设置了一些基本的属性,最后通过通知管理器发送我们的自定义的通知。就是这么简单。

         为通知添加点击事件

        这个例子太简单了。有时候我们的通知还需要可点击的。就相当于我们的QQ里面的通知,当有一条聊天信息的通知的时候,我们点进去这个通知,会直接进入相应的聊天界面。接下来就实现这个功能。

         首先我们新建一个SecondActivity,当我们点击我们的通知后,就跳转到当前这个Activity。既然要调转了,就需要Intent。当时这里使用的PendingIntent。他可以简单地理解为延迟的Intent。意思就是不立即跳转,需要一段时间之后再去跳转。 

case R.id.send:
			NotificationManager manager;
	    	//取得发送通知的管理器
	        manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
	    	
	        Intent intent=new Intent(MainActivity.this,SecondActivity.class);
	        PendingIntent pi=PendingIntent.getActivity(MainActivity.this, 0, intent,0);
	        //创建一个通知
	        Notification notification=new NotificationCompat.Builder(MainActivity.this)
	    	.setContentTitle("通知的标题")
	    	.setContentText("通知的内容")
	    	.setWhen(System.currentTimeMillis())
	    	.setSmallIcon(R.drawable.ic_launcher)
	    	.setContentIntent(pi)
	    	.build();
	        
	        //通过管理器发送通知
	        manager.notify(1, notification);
			break;
		}
        三行代码就可以实现上面下面的效果。

     

          取消通知

      接下来的问题又来了,我们发现当我们点击了我们通知之后,的确进入到了我们第二个界面。注意观察上面的通知却没有消失。怎么办呢?一句话就解决了。

        我们只需要在创建我们的通知的时候,增加一句话就要好了。

.setAutoCancel(true)
        为通知增加声音、振动、闪烁

      有时候我们的通知来的时候,会震动一下,并伴随着声音,并且我们的手机的前置的灯会闪一下,由于这个效果需要真机模拟。你可以在下面使用自己的手机测试一下。

.setVibrate(new long[]{0,1000,1000,1000})//立刻振动1秒,静止1秒,再振动1秒
	    	.setLights(Color.BLUE, 1000, 1000)//亮起时1秒,灭时1秒
	    	.setSound(Uri.fromFile(new File("声音的路径")))
     由于需要震动,我们需要在我们的配置文件当中添加权限
 <uses-permission android:name="android.permission.VIBRATE"/>
        自定义风格

    有时候在我们的通知当中,内容比较多。显示不完全。但是我们又想完全显示我们的内容。这时候我们就可以自定义风格。在里面可以把我们的内容换成图片,长文字等等,甚至是我们自定义的布局。

	    	.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)))
这里我们演示一下把我们内容换成图片


     大概就是这么多。你也可以根据API,自己查询,需要什么使用什么。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值