Android中的通知notification

来源:互联网 发布:梯度下降算法迭代 编辑:程序博客网 时间:2024/05/18 05:49

     有时候我们在玩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