Notification

来源:互联网 发布:快手免费刷播放软件 编辑:程序博客网 时间:2024/06/06 03:00

创建通知的步骤,首先通过NotificationManager来对通知进行管理,可以调用Context的getSystemService()方法获取到。这个方法的参数用于确定获取系统的那个服务。

所以获取NotificationManager的实例就可以写成:

NotificationManager manager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

获取Notificatio的实例可以写成:

 Notification nofitication=new NotificationCompat.Builder(this)                .setContentTitle("第一个通知")                .setSmallIcon(R.mipmap.ic_launcher)//设置小图标                .setContentText("看通知,请看正文,看看")//设置通知正文               .setWhen(System.currentTimeMillis())//显示时间                .setAutoCancel(true)//关闭通知                .build();//build方法得到一个通知        manager.notify(0,nofitication);

通过NotificationCompat类的Builder()方法得到一个Builder对象,再调用这个对象的.build()方法的到一个通知,然后通过NotificationManager的notify()方法让通知显示出来。notify()方法接收两个参数,第一个参数是id,要保证每个通知所指定的id都是不同的。第二个参数则是notification对象。

下面直接贴上常用几种通知的代码

package com.zp.administrator.nofiticationdemo;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.graphics.BitmapFactory;import android.graphics.Color;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.app.NotificationCompat;import android.view.View;import android.widget.Button;import android.widget.RemoteViews;import java.io.File;public class MainActivity extends AppCompatActivity implements View.OnClickListener{    private Button btnNorma101;//普通通知,点击通知进入一个网站    private Button btnNorma102;//普通通知,点击通知进入一个Activity    private Button btnadvace;//设置通知,铃声,震动和闪烁灯    private Button btnLongText;//设置通知显示长文本    private Button btnImage;//设置通知显示大图片    private Button btncustom;//设置自定义通知    private Button btnhang;//设置悬挂式通知    private Button btnprogress;//设置进度条通知    private NotificationManager manager;//通知管理对象,系统服务    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        setViews();//初始化控件        setListeners();//设置事件监听    }    private void setListeners() {        btnNorma101.setOnClickListener(this);        btnNorma102.setOnClickListener(this);        btnadvace.setOnClickListener(this);        btnLongText.setOnClickListener(this);        btnImage.setOnClickListener(this);        btncustom.setOnClickListener(this);        btnhang.setOnClickListener(this);        btnprogress.setOnClickListener(this);    }    private void setViews() {        btnNorma101= (Button) findViewById(R.id.btn_norma101);        btnNorma102= (Button) findViewById(R.id.btn_norma102);        btnadvace= (Button) findViewById(R.id.btn_advance);        btnLongText= (Button) findViewById(R.id.btn_langtext);        btnImage= (Button) findViewById(R.id.btn_image);        btncustom= (Button) findViewById(R.id.btn_custom);        btnhang= (Button) findViewById(R.id.btn_hang);        btnprogress= (Button) findViewById(R.id.btn_progress);        //得到系统服务        manager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);    }    @Override    public void onClick(View v) {        //通过switch,判断当前到底点击的是那个按钮           switch (v.getId()){               case R.id.btn_norma101:                   setNotificationNorma101();//第一种通知格式                   break;               case R.id.btn_norma102:                   setNotificationNorma102();//第二种通知格式                   break;               case  R.id.btn_advance:                   //设置通知到来的铃声,震动闪烁灯                   setNOtificationAdvance();//设置通知的进阶技巧                   break;               case R.id.btn_langtext:                   //设置长文本通知                   setNotificationLongText();                   break;               case R.id.btn_image:                   setNotificationImage();                   break;               case R.id.btn_custom:                   setCustomNotification();//设置自定义通知                   break;               case R.id.btn_hang:                   setHangNotification();//设置悬挂通知                   break;               case R.id.btn_progress:                   setProgressNotification();//设置进度条通知                   break;           }    }    private void setProgressNotification() {        //直接得到Builder对象        final NotificationCompat.Builder builder=new NotificationCompat.Builder(this);        builder.setAutoCancel(true);        builder.setSmallIcon(R.mipmap.ic_launcher);        //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));        builder.setContentTitle("第八个通知——进度条通知");        builder.setContentText("正在下载图片......");        builder.setWhen(System.currentTimeMillis());        //加入多线程        new  Thread(new Runnable() {            @Override            public void run() {                //模拟图片下载的时间                int time;                for(time=0;time<=100;time+=5){                    //设置进度条                    builder.setProgress(100,time,false);                    //第一次展示进度条                    manager.notify(7,builder.build());                    //休眠线程                    try {                        Thread.sleep(2000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }                //整个循环结束模拟下载结束                builder.setContentText("图片下载完成!");                manager.notify(7,builder.build());//发送通知            }        }).start();//多线程启动    }    private void setHangNotification() {        //直接得到Builder对象        NotificationCompat.Builder builder=new NotificationCompat.Builder(this);        builder.setAutoCancel(true);        builder.setSmallIcon(R.mipmap.ic_launcher);        //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));        builder.setContentTitle("第七个通知,悬挂式通知,不需要下拉,就能看到的通知");        builder.setContentText("无需下拉,就能看到");        builder.setWhen(System.currentTimeMillis());        //实现悬挂式通知.android5.0之后的新特性        Intent intent=new Intent(this,NotificationActivity.class);        PendingIntent pending=PendingIntent.getActivity(this,0,intent,0);        builder.setFullScreenIntent(pending,true);        manager.notify(4,builder.build());//发送通知    }    private void setCustomNotification() {        //直接得到Builder对象        NotificationCompat.Builder builder=new NotificationCompat.Builder(this);        builder.setAutoCancel(true);        builder.setSmallIcon(R.mipmap.ic_launcher);        //对于自定义通知,这设置可以省略        /*builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));        builder.setContentTitle("第六个通知,自定义通知");        builder.setContentText("我要一所大房子,面朝大海,春暖花开。");        builder.setWhen(System.currentTimeMillis());*/       //使用RemoteViews来创建自定义的通知视图        RemoteViews remote=new RemoteViews(getPackageName(),R.layout.custom_notification_view);        builder.setCustomBigContentView(remote);        manager.notify(5,builder.build());//发送通知    }    private void setNotificationImage() {        //直接得到Builder对象        NotificationCompat.Builder builder=new NotificationCompat.Builder(this);        builder.setAutoCancel(true);        builder.setSmallIcon(R.mipmap.ic_launcher);        //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));        builder.setContentTitle("第五个通知");        builder.setContentText("通知看图片");        //设置大图片        builder.setStyle(new NotificationCompat.BigPictureStyle()                .bigPicture(BitmapFactory.decodeResource(getResources(),R.mipmap.a1)));        builder.setWhen(System.currentTimeMillis());        manager.notify(4,builder.build());//发送通知    }    private void setNotificationLongText() {        //直接得到Builder对象        NotificationCompat.Builder builder=new NotificationCompat.Builder(this);        builder.setAutoCancel(true);        builder.setSmallIcon(R.mipmap.ic_launcher);        //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));        builder.setContentTitle("第四个通知");        //设置通知显示长文本        builder.setStyle(new NotificationCompat.BigTextStyle().bigText("我挥舞着键盘和鼠标,发誓要把这个世界写的明明白白!" +                "疯狂源自梦想,技术成就辉煌!"));        builder.setWhen(System.currentTimeMillis());        manager.notify(3,builder.build());//发送通知    }    private void setNOtificationAdvance() {        Intent intent=new Intent(this,NotificationActivity.class);        PendingIntent pIntent=PendingIntent.getActivity(this,0,intent,0);        //直接得到Builder对象        NotificationCompat.Builder builder=new NotificationCompat.Builder(this);        builder.setContentIntent(pIntent);        builder.setAutoCancel(true);        builder.setSmallIcon(R.mipmap.ic_launcher);        //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));        builder.setContentTitle("第三个通知");        builder.setContentText("这个通知设置铃声、震动、闪烁灯");        //设置震动,通知到来震动1秒,停止1秒,再震动1秒        builder.setVibrate(new long[]{0,1000,1000,1000});        //设置闪烁灯,绿色灯,1秒闪,1秒灭        builder.setLights(Color.GREEN,1000,1000);        //设置铃声        builder.setSound(Uri.fromFile(new File("/system/media/audio/ringtons/Bounce.ogg")));        /*//将三合一的写法,使用当前手机配置的默认值        builder.setDefaults(NotificationCompat.DEFAULT_ALL);*/        builder.setWhen(System.currentTimeMillis());        manager.notify(2,builder.build());//发送通知    }    private void setNotificationNorma101() {       //点击通知进入一个网站        Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.baidu.com"));        //延迟执行的意图,执行了上面创建的意图        PendingIntent pendIngItent=PendingIntent.getActivity(this,0,intent,0);        //新建一个通知对象        Notification nofitication=new NotificationCompat.Builder(this)                .setContentTitle("第一个通知")                .setSmallIcon(R.mipmap.ic_launcher)//设置小图标                //.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))//设置大图标                .setContentText("看通知,请看正文,看看")//设置通知正文               .setWhen(System.currentTimeMillis())//显示时间                .setContentIntent(pendIngItent)//点击通知跳转页面                .setAutoCancel(true)//关闭通知                .build();//build方法得到一个通知        manager.notify(0,nofitication);    }    private void setNotificationNorma102() {        Intent intent=new Intent(this,NotificationActivity.class);        PendingIntent pIntent=PendingIntent.getActivity(this,0,intent,0);        //直接得到Builder对象        NotificationCompat.Builder builder=new NotificationCompat.Builder(this);        builder.setContentIntent(pIntent);        builder.setAutoCancel(true);        builder.setSmallIcon(R.mipmap.ic_launcher);        //得到大图标,大图标参数是Bitmap,所以要用decodeResource将图片资源转成Builder对象        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));        builder.setContentTitle("第二个通知");        builder.setContentText("通知看正文");        builder.setWhen(System.currentTimeMillis());        manager.notify(1,builder.build());//发送通知    }}
0 0
原创粉丝点击