【Android】自定义状态栏通知

在项目开发中,我们有时候需要自定义状态栏通知的样式,以下就是自定义状态栏通知的一个案例代码,以此作为一个记录,有需要的童鞋也可以参考一下

  1. 状态栏通知布局custom_notification.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="64dp"
        android:background="@android:color/white">
    
        <ImageView
            android:id="@+id/image"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParents="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />
    
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@id/image">
    
            <TextView
                android:id="@+id/title"
                style="@style/NotificationTitle"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true" />
    
            <TextView
                android:id="@+id/text"
                style="@style/NotificationText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/title"
                android:ellipsize="end"
                android:lines="2" />
    
            <TextView
                android:id="@+id/time"
                style="@style/NotificationText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@id/title"
                android:layout_alignParentRight="true"
                android:layout_marginRight="5dip"
                android:layout_toLeftOf="@id/title" />
        </RelativeLayout>
    </RelativeLayout>
    
  2. 这里面的style都是使用的继承系统的文字样式
    <!-- 自定义状态栏通知 -->
    <style name="NotificationText" parent="android:TextAppearance.StatusBar.EventContent">
        <item name="android:textColor">#bb000000</item>
        <item name="android:textSize">16px</item>
    </style>
    <style name="NotificationTitle" parent="android:TextAppearance.StatusBar.EventContent.Title">
        <item name="android:textColor">#bb000000</item>
    </style>
    
  3. 创建自定义通知方法
    /**
     * 自定义通知
     */
    private void createCustomNotification(Context context, String tickerText,
                                          int drawable, String title, String content, int id,
                                          PendingIntent pendingIntent) {
        int icon = R.mipmap.ic_launcher;
        long when = System.currentTimeMillis();
        //必须要有这三个参数,不然出来的状态栏显示不全
        Notification notification = new Notification(icon, tickerText, when);
    
        RemoteViews contentView = new RemoteViews(this.getPackageName(), R.layout.custom_notification);
        contentView.setImageViewResource(R.id.image, drawable);
        contentView.setTextViewText(R.id.title, title);
        contentView.setTextViewText(R.id.text, content);
        // 设置日期格式
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = dateFormat.format(new Date());
        contentView.setTextViewText(R.id.time, time.substring((time.length() - 8), (time.length() - 3)));
    
        notification.contentView = contentView;
        notification.contentIntent = pendingIntent;
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notification.defaults = Notification.DEFAULT_SOUND;
        NotificationManager mNotificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(id, notification);
    }
    

欢迎androider扫描以下二维码关注微信公众号:爱安卓 ,或者搜索微信 : loveandroid321关注

时间: 2024-10-13 13:44:36

【Android】自定义状态栏通知的相关文章

android 实现自定义状态栏通知(Status Notification)

在android项目的开发中,有时为了实现和用户更好的交互,在通知栏这一小小的旮旯里,我们通常需要将内容丰富起来,这个时候我们就需要去实现自定义的通知栏,例如下面360或者网易的样式: 首先我们要了解的是 自定义布局文件支持的控件类型:Notification的自定义布局是RemoteViews,因此,它仅支持FrameLayout.LinearLayout.RelativeLayout三种布局控件,同时支持AnalogClock.Chronometer.Button.ImageButton.I

【Android】状态栏通知Notification、NotificationManager详解(转)

在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? 首先,发送一个状态栏通知必须用到两个类:  NotificationManager . Notification. NotificationManager :  是状态栏通知的管理类,负责发通知.清楚通知等. NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取. [java] view plainc

自定义状态栏通知

状态栏通知布局 custom_notification.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height=&q

android 自定义状态栏和导航栏分析与实现

效果 android 4.4之后,系统是支持自定义状态栏和导航栏的,举个最典型的例子就是bilibili客户端了(iOS版本和android版本能用两套完全不一样符合各自系统的设计ui,良心啊-),顶部状态栏为粉色,底部导航栏为半透明色: 接着QQ最新的版本6.2也使用了状态栏透明风格,但是出来的效果在不同版本,不同手机上,显示的效果真是差异很大(4.3版本是无法使用状态栏透明风格的,只是放出来做个对比): ------------------------------------ -------

Android Notification状态栏通知

没有添加额外的震动及声音效果,这里直接实现了通知的功能,看效果吧: MainActivity.java package com.example.notification; import android.os.Bundle; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Notification; import android.app.NotificationManag

Android基础入门教程——2.5.2 Notification(状态栏通知)详解

Android基础入门教程--2.5.2 Notification(状态栏通知)详解 标签(空格分隔): Android基础入门教程 本节引言: 本节带来的是Android中用于在状态栏显示通知信息的控件:Notification,相信大部分 学Android都对他都很熟悉,而网上很多关于Notification的使用教程都是基于2.x的,而 现在普遍的Android设备基本都在4.x以上,甚至是5.0以上的都有:他们各自的Notification 都是不一样的!而本节给大家讲解的是基于4.x以

Android 状态栏通知Notification、NotificationManager简介

Notification(通知)一般用在电话,短信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,提示用户处理这个通知,这时手从上方滑动状态栏就可以展开并处理这个通知: 在Android系统中,发一个状态栏通知还是很方便的.发送一个状态栏通知必须用到两个类:  NotificationManager . Notification: NotificationManager :  是状态栏通知的管理类,负责发通知.清楚通知等:NotificationManager 是一个系统Service,必

Android 状态栏通知Notification、NotificationManager详解

在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? 首先,发送一个状态栏通知必须用到两个类:  NotificationManager . Notification. NotificationManager :  是状态栏通知的管理类,负责发通知.清楚通知等. NotificationManager 是一个系统Service,必须通过 getSystemService()方法来获取. 1 <code>Notificat

android学习笔记---发送状态栏通知

发送消息的代码如下:     //获取通知管理器     NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);         int icon = android.R.drawable.stat_notify_chat;         long when = System.currentTimeMillis();