zoukankan      html  css  js  c++  java
  • Android基础------通知栏

    前言:Android通知栏提示笔记

    通知几乎是每一款app都拥有的功能

    1.发送通知

    发送一个通知栏必须用到两个类:  NotificationManager 、 Notification。

    NotificationManager :  是状态栏通知的管理类,负责发通知、清楚通知等。

    NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取。

    视图文件, xml:

    <Button
            android:text="发送通知"
            android:onClick="test_2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    <Button android:text="下载通知" android:onClick="test_3" android:layout_width="match_parent" android:layout_height="wrap_content" />

    方法:

    //===========================发通知==============================//
        //定义一个NotifactionManager对象
        private NotificationManager manager;
        //设置日期格式
        private SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
        
        public void test_2(View view){
            //获取NotifactionManager对象
            manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            //构建一个Notifaction的Builder对象
            Notification.Builder builder=new Notification.Builder(this);
            //设置通知相关信息
            builder.setTicker("你有一条新的通知");//设置信息提示
            builder.setSmallIcon(R.mipmap.ic_launcher);//设置通知提示图标
            builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.user2));//设置图标
            builder.setContentTitle("部门通知");//设置标题
            builder.setContentText("今天中午一点在报告厅一开部门会议,"+sdf.format(new Date()));//设置文本
            builder.setAutoCancel(true);//查看后自动取消
            builder.setWhen(SystemClock.currentThreadTimeMillis());//什么时候发出的通知
            builder.setDefaults(Notification.DEFAULT_LIGHTS);//消息提示模式
    
            //设置震动规律,(第一个参数: 振动前等待的时间,第二个参数: 第一次振动的时长、以此类推  )
            builder.setVibrate(new long[]{1000,2000,1000,3000});
            //builder.setSound(); //设置声音
            //自定义声音
            //builder.setSound(Uri.parse("file:///sdcard/notification/ringer.mp3"));
            //设置灯
            builder.setLights(Color.GREEN,1000,1000);
    
            //设置点击通知后执行的动作
            Intent intent=new Intent(this,NewFileActivity.class);
            intent.putExtra("message","今天中午一点在报告厅一开部门会议,请大家准参加,通知发布时间:"+sdf.format(new Date()));
            //用当前时间充当通知的id,这里是为了区分不同的通知,如果是同一个id,前者就会被后者覆盖
            int requestId=(int) new Date().getTime();
            //第一个参数连接上下文的context
            // 第二个参数是对PendingIntent的描述,请求值不同Intent就不同
            // 第三个参数是一个Intent对象,包含跳转目标
            // 第四个参数有4种状态
            PendingIntent pendingIntent=PendingIntent.getActivity(this,requestId,intent,PendingIntent.FLAG_UPDATE_CURRENT);
            builder.setContentIntent(pendingIntent);
    
            //发出通知,参数是(通知栏的id,设置内容的对象)
            manager.notify(requestId,builder.build());
        }

    图解:

    对 NotificationManager 、 Notification更详细的内容

     2.下载通知

    demo:

     //发送一个下载通知
        Notification.Builder builder;
        public void test_3(View view){
            manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            builder=new Notification.Builder(this);
    
            builder.setTicker("文件开始下载");
            builder.setSmallIcon(R.mipmap.ic_launcher);
            builder.setContentTitle("文件下载");
            builder.setContentText("文件正在下载中......");
            builder.setWhen(SystemClock.currentThreadTimeMillis());
            builder.setDefaults(Notification.DEFAULT_LIGHTS);//消息提示模式
            builder.setProgress(100,0,false);
    
            //模拟正在执行下载
            new Thread(new Runnable() {
                @Override
                public void run() {
                    for (int i=1;i<=100;i++){
                        builder.setProgress(100, i, false);
                        if(i==100)
                            builder.setContentText("文件下载完毕!");
                        manager.notify(1, builder.build());
                        SystemClock.sleep(100);//模拟下载
                    }
                    manager.cancel(1);
                }
            }).start();
    
        }

  • 相关阅读:
    如何制作Python百分比进度条
    如何按列表的元素中的第二个元素排序
    map的用法Python
    上一个问题增加用户名密码登陆
    最近alex买了个Tesla Model S,通过转账的形式,并且支付了5%的手续费,tesla价格为95万。账户文件为json,请用程序实现该提现行为。
    最近alex买了个Tesla Model S,通过转账的形式,并且支付了5%的手续费,tesla价格为95万。账户文件为json,请用程序实现该转账行为。
    写一个6位随机验证码程序,要求验证码中至少包含一个数字,一个小写字母,一个大写字母
    传统html和html5网页布局
    图片路径问题
    面向对象编程的一个形象比喻
  • 原文地址:https://www.cnblogs.com/jyiqing/p/7989197.html
Copyright © 2011-2022 走看看