android——Notification的基本使用

分为4种,一种是普通视图,一种大视图,一种带进度条的视图,一种自定义的视图
在这里我利用4个按钮来触发通知事件,布局文件就是4个button
1.普通视图

 //普通通知
    public void sendNotification(){

        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(Main5Activity.this);
        //设置相关的属性,小图标、标题、内容是三个必须要设置的
        builder.setSmallIcon(R.drawable.y1);//设置小图标
        builder.setContentTitle("您有一条新消息");//设置标题
        builder.setContentText("mmmmmmm");//设置内容

        builder.setAutoCancel(true);//自动取消,也可以在跳转进去的页面取消
        //NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        //nm.cancel(Main5Activity.n_1);

        builder.setDefaults(Notification.DEFAULT_ALL);//设置呼吸灯、声音、震动
        builder.setNumber(10);//设置发送的数据条数
        builder.setTicker("新消息");//在通知栏出现的字
//        builder.setOngoing(true);//设置为常驻通知,不能删除

        //定义一个意图,当点击通知时,要打开一个界面
        Intent intent = new Intent(this,Main4Activity.class);
        intent.putExtra("msg","xxxxxx");//传数据

        //参数:上下文,请求编码(没用),意图,创建PendingIntent的方式
//        PendingIntent.FLAG_CANCEL_CURRENT:取消当前的PI,创建新的
//        PendingIntent.FLAG_NO_CREATE:如果有就使用,没用创建
//        PendingIntent.FLAG_ONE_SHOT:只使用一次
//        PendingIntent.FLAG_UPDATE_CURRENT:如果有,更新Intent,没用就创建
        PendingIntent pi = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
        //通知的事件
        builder.setContentIntent(pi);

        //创建一个通知对象
        Notification n = builder.build();

        //获取系统的通知管理者,然后发送通知
        NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        nm.notify(1,n);
    }

2.大视图通知

//大视图通知
    public void sendNotification2(){
        //实例化NotificationCompat.Builde并设置相关属性
        NotificationCompat.Builder builder = new NotificationCompat.Builder(Main5Activity.this);
        //设置相关的属性,小图标、标题、内容是三个必须要设置的
        builder.setSmallIcon(R.drawable.y1);//设置小图标
        builder.setContentTitle("消息");//设置标题
        builder.setContentText("消息");//设置内容
        //设置大视图样式
        NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
        style.setBigContentTitle("大视图通知");
        style.addLine("1");
        style.addLine("2");
        style.addLine("3");
        builder.setStyle(style);

        style.setSummaryText("内容");
        builder.setNumber(5);

        //创建一个通知对象
        Notification n = builder.build();

        //获取系统的通知管理者,然后发送通知
        NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        nm.notify(2,n);

    }

3.带进度条的视图

//带进度条的通知
    public void sendNotification3(){
        final NotificationCompat.Builder builder = new NotificationCompat.Builder(this);

        builder.setContentTitle("下载");
        builder.setContentText("下载中");
        builder.setSmallIcon(R.drawable.y1);

        builder.setProgress(100,5,false);//false,确定的进度条

        final NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        nm.notify(3,builder.build());

        //线程模拟下载
        new Thread(new Runnable() {
            @Override
            public void run() {
                for(int progress = 0;progress<=100;progress++){
                    builder.setProgress(100,progress,false);
                    nm.notify(n_3,builder.build());
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                builder.setContentText("更新完成");
                nm.notify(3,builder.build());
            }
        }).start();
    }

4.自定义的视图
在这里随便建一个layout用来做自定义的视图
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"
    android:layout_gravity="center">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/ic_btn_speak_now"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/music_name"
        android:text="歌曲名称"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/play"
        android:text="播放"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/stop"
        android:text="下一首"/>

</LinearLayout>

activity里:

 //自定义视图的通知
    public void sendNotification4(){
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        //创建视图
        RemoteViews views = new RemoteViews(getPackageName(),R.layout.layout_mynotification);

        views.setTextViewText(R.id.play,"开始播放");//设置按钮的字
        views.setTextViewText(R.id.music_name,"歌曲");//设置Textview的字

//        views.setOnClickPendingIntent();//点击进入页面

        builder.setSmallIcon(R.drawable.y1);//必须设置,不然会报错
        builder.setContent(views);
        builder.setTicker("音乐");
        builder.setOngoing(true);//常驻

        NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
        nm.notify(4,builder.build());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值