android notification 动画,Android实现3种Notification(状态栏通知)

Notification,是一种具有全局效果的通知,可以在系统的通知栏中显示。当 APP 向系统发出通知时,它将先以图标的形式显示在通知栏中。用户可以下拉通知栏查看通知的详细信息。下面会分别实现普通的通知,带自定义视图的通知,还有悬挂似的通知

3种方式开始前都要先执行下面这行代码:

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

1.普通通知:

效果图:

a84ddaf530ec

gif1.gif

创建Builder对象,利用PendingIntent来跳转,然后给Builder添加各种属性。

完整的代码如下:

Notification.Builder builder=new Notification.Builder(this);

Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.jianshu.com/p/82e249713f1b"));

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

builder.setContentIntent(pendingIntent);

builder.setSmallIcon(R.mipmap.ic_launcher);

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

builder.setAutoCancel(true);

builder.setContentTitle("普通通知");

mNotificationManager.notify(1, builder.build());

2.带视图的通知

效果图:

a84ddaf530ec

gif2.gif

自定义视图有两种状态,一种是上面的效果图,即展开状态的视图;另一种是普通状态下的视图,需要我们手动的拉一下,折叠部分才会出来。我们需要用到RemoteViews哎创建视图。

视图的布局我就不贴出来了,就是个普通的水平布局.

指定展开状态的视图:

notification.bigContentView=remoteViews;

普通状态视图:

notification.contentView=remoteViews;

完整代码如下:

Notification.Builder builder2=new Notification.Builder(this);

Intent intent2=new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.jianshu.com/p/82e249713f1b"));

PendingIntent pendingIntent2=PendingIntent.getActivity(this,0,intent2,0);

builder2.setContentIntent(pendingIntent2);

builder2.setSmallIcon(R.mipmap.ic_launcher);

builder2.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));

builder2.setAutoCancel(true);

builder2.setContentTitle("折叠通知");

RemoteViews remoteViews=new RemoteViews(getPackageName(),R.layout.layout_view);

Notification notification=builder2.build();

notification.bigContentView=remoteViews;

mNotificationManager.notify(1,notification);

3.悬挂式的通知

效果图:

a84ddaf530ec

gif3.gif

悬挂式是Android5.0以后的新特性,前两种需要手动拉通知栏,而这种方式不需要,直接就可以显示在屏幕上方.

完整代码如下:

Notification.Builder builder3=new Notification.Builder(this);

Intent intent3=new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.jianshu.com/p/82e249713f1b"));

PendingIntent pendingIntent3=PendingIntent.getActivity(this,0,intent3,0);

builder3.setContentIntent(pendingIntent3);

builder3.setSmallIcon(R.mipmap.ic_launcher);

builder3.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));

builder3.setAutoCancel(true);

builder3.setContentTitle("悬挂通知");

Intent XuanIntent=new Intent();

XuanIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

XuanIntent.setClass(this,MainActivity.class);

PendingIntent xuanpengdIntent=PendingIntent.getActivity(this,0,XuanIntent,PendingIntent.FLAG_CANCEL_CURRENT);

builder3.setFullScreenIntent(xuanpengdIntent,true);

mNotificationManager.notify(2,builder3.build());

附加:Android5.0以后可以设置通知的等级

VISIBILITY_PUBLIC: 任何情况的显示

VISIBILITY_PRIVATE: 只有在没有锁屏时显示

VISIBILITY_SECRET: 在安全锁下或者没锁屏下显示

Android5.0以后可以通过builder.setVisibility(Notification.VISIBILITY_PUBLIC);设置.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值