随笔 - 62  文章 - 0  评论 - 114  阅读 - 18万

NotificationManager 使用Bitmap做图标

自定义带倒影和偏转的超炫Gallery
http://www.eoeandroid.com/thread-236334-1-1.html

GPS封装类,封装了GPS细节,通过start和stop调用
http://www.eoeandroid.com/thread-236426-1-1.html

关于Zxing二维码扫描开灯的问题
http://www.eoeandroid.com/thread-235785-1-1.html

---------------------------帖子正文-------------------------

今天看到EOE问答里面有这“[Android 界面]NotificationManager 如何使用Bitmap做图标 http://www.eoeandroid.com/thread-230996-1-1.html ”这样一个问题,在论坛搜索也没有好的案例

特写一个简单的demo供大家参考


今天发布的是NotificationManager 使用Bitmap做图标

关键code

复制代码
public void notification(int flag)
    {
      Notification notification = new Notification();
         //设置statusbar显示的icon
        notification.icon = R.drawable.icon;
   //设置statusbar显示的文字信息
  // myNoti.tickerText= new_msg ;
        notification.flags = Notification.FLAG_AUTO_CANCEL;
   //设置notification发生时同时发出默认声音
        notification.defaults = Notification.DEFAULT_SOUND;
        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification);
        Bitmap bitmap=null;
        if(flag==0)
        {
         bitmap=drawableToBitmap(this.getResources().getDrawable(R.drawable.icon));
        }else
        {
         //此处是关键地方,可以从网络或是sdcard上获取图片,转成bitmap就可以
         bitmap=drawableToBitmap(this.getResources().getDrawable(R.drawable.alert_dialog_icon));
        }
        contentView.setImageViewBitmap(R.id.notification_icon, bitmap);
        contentView.setTextViewText(R.id.app_name, "Custom notification");
        notification.contentView = contentView;
        Intent intent = new Intent(this, MainActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent,
                        PendingIntent.FLAG_UPDATE_CURRENT);
        notification.contentIntent = contentIntent;
        
        //显示Notification
        Random random = new Random(new Date().getTime());
        mNotificationManager.notify(random.nextInt(1000000), notification);
    }
   
    //转化drawableToBitmap
    public static Bitmap drawableToBitmap(Drawable drawable)
{
  Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);
  Canvas canvas = new Canvas(bitmap);
  drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
  drawable.draw(canvas);
  return bitmap;
}
复制代码

 

源码下载:NotificationIcon.rar

posted on   nuliniao  阅读(1278)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2012年12月 >
25 26 27 28 29 30 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示