• Stars
    star
    255
  • Rank 159,729 (Top 4 %)
  • Language
    Java
  • Created about 8 years ago
  • Updated almost 8 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

全新的Android通知栏,已抛弃setLatestEventInfo,兼容高版本

#全新的Android通知栏,已抛弃setLatestEventInfo,兼容高版本

这算是一个入门级的Android通知栏notification的文章,因为在项目中要用到,又发现以前的低版本的用setLatestEventInfo已过时,还报错,完全不兼容。所以,在这里介绍下基本用法,代码比较简单,高手请略过。

先看效果图

#1.主要参数介绍

图片1 图片2 图片3

  • 1.notification的title
  • 2.发送notification的application的icon或者发送者的image。
  • 3.notification的message
  • 4.notification的数目显示
  • 5.当main icon用来显示sender’s image时 Secondary icon用来显示发送application的icon。
  • 6.时间戳,默认为系统发出通知的时间。 #2.显示一个普通的通知栏
    /**
     * 显示一个普通的通知
     *
     * @param context 上下文
     */
    public static void showNotification(Context context) {
        Notification notification = new NotificationCompat.Builder(context)
                /**设置通知左边的大图标**/
                .setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))
                /**设置通知右边的小图标**/
                .setSmallIcon(R.mipmap.ic_launcher)
                /**通知首次出现在通知栏,带上升动画效果的**/
                .setTicker("通知来了")
                /**设置通知的标题**/
                .setContentTitle("这是一个通知的标题")
                /**设置通知的内容**/
                .setContentText("这是一个通知的内容这是一个通知的内容")
                /**通知产生的时间,会在通知信息里显示**/
                .setWhen(System.currentTimeMillis())
                /**设置该通知优先级**/
                .setPriority(Notification.PRIORITY_DEFAULT)
                /**设置这个标志当用户单击面板就可以让通知将自动取消**/
                .setAutoCancel(true)
                /**设置他为一个正在进行的通知。他们通常是用来表示一个后台任务,用户积极参与(如播放音乐)或以某种方式正在等待,因此占用设备(如一个文件下载,同步操作,主动网络连接)**/
                .setOngoing(false)
                /**向通知添加声音、闪灯和振动效果的最简单、最一致的方式是使用当前的用户默认设置,使用defaults属性,可以组合:**/
                .setDefaults(Notification.DEFAULT_VIBRATE | Notification.DEFAULT_SOUND)
                .setContentIntent(PendingIntent.getActivity(context, 1, new Intent(context, MainActivity.class), PendingIntent.FLAG_CANCEL_CURRENT))
                .build();
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
        /**发起通知**/
        notificationManager.notify(0, notification);
    }

#3.显示一个下载带进度条的通知

    /**
     * 显示一个下载带进度条的通知
     *
     * @param context 上下文
     */
    public static void showNotificationProgress(Context context) {
        //进度条通知
        final NotificationCompat.Builder builderProgress = new NotificationCompat.Builder(context);
        builderProgress.setContentTitle("下载中");
        builderProgress.setSmallIcon(R.mipmap.ic_launcher);
        builderProgress.setTicker("进度条通知");
        builderProgress.setProgress(100, 0, false);
        final Notification notification = builderProgress.build();
        final NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
        //发送一个通知
        notificationManager.notify(2, notification);
        /**创建一个计时器,模拟下载进度**/
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            int progress = 0;

            @Override
            public void run() {
                Log.i("progress", progress + "");
                while (progress <= 100) {
                    progress++;
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    //更新进度条
                    builderProgress.setProgress(100, progress, false);
                    //再次通知
                    notificationManager.notify(2, builderProgress.build());
                }
                //计时器退出
                this.cancel();
                //进度条退出
                notificationManager.cancel(2);
                return;//结束方法
            }
        }, 0);
    }

#4.显示一个悬挂式的通知

    /**
     * 悬挂式,支持6.0以上系统
     *
     * @param context
     */
    public static void showFullScreen(Context context) {
        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
        Intent mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://blog.csdn.net/itachi85/"));
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, mIntent, 0);
        builder.setContentIntent(pendingIntent);
        builder.setSmallIcon(R.mipmap.ic_launcher);
        builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher));
        builder.setAutoCancel(true);
        builder.setContentTitle("悬挂式通知");
        //设置点击跳转
        Intent hangIntent = new Intent();
        hangIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        hangIntent.setClass(context, MainActivity.class);
        //如果描述的PendingIntent已经存在,则在产生新的Intent之前会先取消掉当前的
        PendingIntent hangPendingIntent = PendingIntent.getActivity(context, 0, hangIntent, PendingIntent.FLAG_CANCEL_CURRENT);
        builder.setFullScreenIntent(hangPendingIntent, true);
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
        notificationManager.notify(3, builder.build());
    }

#5.显示一个折叠式的通知

    /**
     * 折叠式
     *
     * @param context
     */
    public static void shwoNotify(Context context) {
        //先设定RemoteViews
        RemoteViews view_custom = new RemoteViews(context.getPackageName(), R.layout.view_custom);
        //设置对应IMAGEVIEW的ID的资源图片
        view_custom.setImageViewResource(R.id.custom_icon, R.mipmap.icon);
        view_custom.setTextViewText(R.id.tv_custom_title, "今日头条");
        view_custom.setTextColor(R.id.tv_custom_title, Color.BLACK);
        view_custom.setTextViewText(R.id.tv_custom_content, "金州勇士官方宣布球队已经解雇了主帅马克-杰克逊,随后宣布了最后的结果。");
        view_custom.setTextColor(R.id.tv_custom_content, Color.BLACK);
        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context);
        mBuilder.setContent(view_custom)
                .setContentIntent(PendingIntent.getActivity(context, 4, new Intent(context, MainActivity.class), PendingIntent.FLAG_CANCEL_CURRENT))
                .setWhen(System.currentTimeMillis())// 通知产生的时间,会在通知信息里显示
                .setTicker("有新资讯")
                .setPriority(Notification.PRIORITY_HIGH)// 设置该通知优先级
                .setOngoing(false)//不是正在进行的   true为正在进行  效果和.flag一样
                .setSmallIcon(R.mipmap.icon);
        Notification notify = mBuilder.build();
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
        notificationManager.notify(4, notify);
    }

#6.GitHub

More Repositories

1

DylanStepCount

Android精准计步器
Java
1,568
star
2

WelcomeVideoPager

Android酷炫欢迎页播放视频,仿蚂蜂窝自由行和慕课网
Java
223
star
3

ViewPagerFragmentLazyLoad

Android中ViewPager+Fragment懒加载问题解决方案Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
Java
202
star
4

JDBCUtil

玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入
Java
115
star
5

VRDevelopVideo

【Android开发VR实战】二.播放360°全景视频
Java
101
star
6

CircleMenu

Android属性动画应用超简单代码打造酷炫扇形(卫星),圆形菜单
Java
92
star
7

VRDevelopImage

【Android开发VR】一.给用户呈现一个360°全景图片
Java
82
star
8

GridViewAddImage

Android GridView扩展仿微信微博发布动态添加删除图片
Java
72
star
9

RecyclerViewDemo2

精通RecyclerView:打造ListView、GridView、瀑布流;学会添加分割线、 添加删除动画 、Item点击事件
Java
67
star
10

BaiduProgressBar

仿百度加载动画,一种优雅的Loading方式
Java
67
star
11

MPermissions

Android6.0M权限实战,轻量级封装
Java
49
star
12

AnimationDemo

Android基础动画,组合动画,帧动画,布局动画,Activity跳转动画
Java
39
star
13

AnimatorDemo

Android属性动画上手实现各种动画效果
Java
31
star
14

ARDevelopDemo

ARDevelopDemo
Java
30
star
15

ServiceTask

Android中Service+Notification断点续传下载
Java
29
star
16

StepCircleStaffView

Android自定义View和属性动画完美结合,创造出酷炫圆环动画,带标尺和进度
Java
28
star
17

VideoCamera

很好的Android录制视频代码可设置清晰度大小和时长
Java
25
star
18

VRDevelopGame

【Android开发VR】三.开发一个寻宝类VR游戏TreasureHunt
Java
25
star
19

ListViewUpdate

ListView万能适配器,ListView局部更新
Java
23
star
20

AndroidPicker_LikeiOS

Android仿IOS各类选择器
Java
19
star
21

TablayoutRedDot

TabLayout设置小红点
Java
16
star
22

SQLite

SQLite
Java
14
star
23

TouchFingerImageView

仿去哪儿点击缩放显示指纹效果
Java
14
star
24

LauncherView

Android仿桌面拖动、排序、合并文件夹
Java
9
star
25

LoadingDialog

加载等待对话框
Java
9
star
26

RecyclerViewDemo

Android用RecyclerView打造仿美团分类界面
Java
8
star
27

LambdaTest

Android中如何使用Lambda表达式高效开发
Java
6
star
28

VersionUpdate

Android版本自动升级框架
Java
6
star
29

CustomView

Android中常用的自定义View
Java
5
star
30

SearchVIew

【Android自定义View实战】之超简单SearchVIew
Java
4
star
31

AndroidFastDevFrame

Java
4
star
32

sql

从零开始学习mysql与oracle数据库
PLSQL
3
star
33

CustomTitleBar

自定义标题栏
Java
3
star
34

AndroidNotification

Android 通知栏Notification的全面整合学习
Java
2
star
35

FastDev

Android快速开发框架第二版
Java
2
star
36

UncaughtExceptionSendEmail

Java
2
star
37

ChatDemoUI3.0

环信demo
Java
1
star
38

ActivityLaunchMode

深入Activity,Activity启动模式LaunchMode完全解析
Java
1
star
39

OffingHarbor

最新版FindViewById插件添加ORIGINAL模式->即生成的id变量名和layout配置文件中的一致 由DylanAndroid制作
Java
1
star
40

MyTimePick

仿滴滴打车时间选择器
Java
1
star
41

FullScreenDialog

可以宽度全屏的对话框
Java
1
star
42

SQLInjection

如何防止SQL注入
Java
1
star