Notification

效果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一.相关类

构建通知管理通知
NotificationCompatNotificationManager

二.NotificationCompat.Builder常用方法

  • setSmallIcon

  • setContentTitle

  • setContentText

  • setContentInfo

  • setContent

  • setWhen

  • setShowWhen

  • setGroup

  • setGroupSummary

  • setContentIntent

  • setTicker

  • setDefaults

  • builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.bq1));

  • builder.setTicker(“来消息了”);

  • builder.setDefaults(Notification.DEFAULT_ALL);

  • builder.setVisibility(Notification.VISIBILITY_PUBLIC);

  •  VISIBILITY_PUBLIC: 任何情况的显示
     VISIBILITY_PRIVATE: 只有在没有锁屏时显示
     VISIBILITY_SECRET: 在安全锁下或者没锁屏下显示
    
  • setFullScreenIntent 横幅通知

三.通知样式

  • BigTextStyle
  • InboxStyle
  • BigPictureStyle

四.普通通知

 NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setSmallIcon(R.mipmap.iphone);
        builder.setContentTitle("来电话了");
        builder.setContentText("妈妈喊你回家吃饭");
        builder.setContentInfo("吃午饭");
        builder.setWhen(System.currentTimeMillis());
        builder.setShowWhen(true);
        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        manager.notify(100,builder.build());

五.进度条通知

 public void showProgressNotification(View view) {
        builder  = new Notification.Builder(this);
        builder.setContentTitle("普通通知标题");
        builder.setContentText("通知内容");
        builder.setContentInfo("info..info");
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.bq1));
        builder.setSmallIcon(R.mipmap.address);
        builder.setWhen(System.currentTimeMillis());
        builder.setTicker("来消息了");
        builder.setDefaults(Notification.DEFAULT_ALL);


        CountDownTimer countDownTimer = new CountDownTimer(10000,1000) {
            @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onTick(long millisUntilFinished) {
                proNum+=10;
                builder.setProgress(100,proNum,false);
                manager.notify(2,builder.build());
            }

            @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
            @Override
            public void onFinish() {
                builder.setProgress(0,0,true);
                manager.notify(2,builder.build());
                manager.cancel(2);
            }
        };
        countDownTimer.start();
    }

六.长文本样式进度条

 public void notificationStyle(){
        manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.bq1));
        android.support.v4.app.NotificationCompat.BigTextStyle style = new android.support.v4.app.NotificationCompat.BigTextStyle();
        style.bigText("这里是点击通知后要显示的正文,可以换行可以显示很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长");
        style.setBigContentTitle("点击后的标题");
        builder.setStyle(style);
        manager.notify(102,builder.build());
    }

七.分组通知

 public void groupNotification(View view){

        builder = new Notification.Builder(this);
        builder.setContentTitle("第一小分队");
        builder.setContentText("第一小分队以爱岗敬业为主");
        builder.setSmallIcon(R.mipmap.iphone);
        builder.setGroup("group1");
        builder.setGroupSummary(true);
        manager.notify(104,builder.build());

        NotificationCompat.Builder builder1 = new NotificationCompat.Builder(this);
        builder1.setSmallIcon(R.mipmap.address);
        builder1.setContentTitle("第二小分队");
        builder1.setContentText("第二小分队和第一小分队一样一样的");
        builder1.setGroup("group1");
        builder1.setGroupSummary(true);
        manager.notify(105,builder1.build());
    }

八.自动回复通知

public void zidonghuifu(){

        RemoteInput input = new RemoteInput.Builder("key").build();

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
        builder.setSmallIcon(R.mipmap.case_fill1);

        Intent intent = new Intent();
        PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);

        NotificationCompat.Action.Builder actionBuilder =
                new NotificationCompat.Action.Builder(R.mipmap.iphone,"自动回复通知标题",pendingIntent);

        actionBuilder.addRemoteInput(input);

        builder.addAction(actionBuilder.build()); //action

        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        manager.notify(++notification_id,builder.build());
    }

九.自定义通知

1.定义通知布局

<ImageView 
	    android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="10dp"
        android:contentDescription="@string/Image" />
	
    <TextView 
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/image"
        style="@style/NotificationTitle" />
    
    <TextView 
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/image"
        android:layout_below="@id/title"
        style="@style/NotificationText" />

2.编写核心代码

RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification);
        contentView.setImageViewResource(R.id.image, R.drawable.notification_image);
        contentView.setTextViewText(R.id.title, "自定义通知标题");
        contentView.setTextViewText(R.id.text, "自定义通知内容");
        builder.setCustomContentView(contentView);

十.双击退出

public boolean onKeyDown(int keyCode, KeyEvent event) {
        Toast.makeText(this, "点击退出", Toast.LENGTH_SHORT).show();

        //如果按下的是退出按钮
        if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
            long second = System.currentTimeMillis();
            if(second - first > 2000){
                Toast.makeText(this, "再按一次", Toast.LENGTH_SHORT).show();
                first = second;
            }
            else
                finish();
        }
        return false;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值