自定义状态栏通知

状态栏通知布局

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="@color/white" >
    <ImageView
        android:id="@+id/image"
        android:layout_width="40dip"
        android:layout_height="40dip"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:contentDescription="@string/Image" />
    <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>

这里面的style都是使用的继承系统的文字样式

<!-- 自定义状态栏通知 -->
<style name="NotificationText" parent="android:TextAppearance.StatusBar.EventContent">
    <item name="android:textColor">#bb000000</item>
    <item name="android:textSize">@dimen/notification_text_size</item>
</style>
<style name="NotificationTitle" parent="android:TextAppearance.StatusBar.EventContent.Title">
    <item name="android:textColor">#bb000000</item>
</style>

创建一个通知

    /**
     * @param ctxt 上下文
     * @param tickerText    通知在状态栏的提示文本
     * @param drawable 通知在状态栏显示的图标
     * @param title 通知标题
     * @param content 通知内容
     * @param id id
     * @param pendingIntent 点击该通知要进行的操作,例如:打开一个Activity
     */
    @SuppressLint("NewApi")
    private void createCustomNotification(Context ctxt, String tickerText,
            int drawable, String title, String content, int id,
        PendingIntent pendingIntent) {
        int icon = R.drawable.ic_launcher;
        long when = System.currentTimeMillis();
        // 1
        Notification notification = new Notification.Builder(ctxt)
        .setSmallIcon(icon)
        .setTicker(tickerText)
        .setWhen(when)
        .build();

        // 2
        RemoteViews contentView = new RemoteViews(getPackageName(),
                R.layout.custom_notification);
        contentView.setImageViewResource(R.id.image, drawable);
        contentView.setTextViewText(R.id.title, title);
        contentView.setTextViewText(R.id.text, content);
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式
        String time = df.format(new Date());
        contentView.setTextViewText(R.id.time,
                time.substring((time.length() - 8), (time.length() - 3)));
        // 3
        notification.contentView = contentView;
        notification.contentIntent = pendingIntent;
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notification.defaults = Notification.DEFAULT_SOUND;

        // 4
        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) ctxt
                .getSystemService(ns);
        mNotificationManager.notify(id, notification);
    }
时间: 2024-08-01 10:56:44

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

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

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

【Android】自定义状态栏通知

在项目开发中,我们有时候需要自定义状态栏通知的样式,以下就是自定义状态栏通知的一个案例代码,以此作为一个记录,有需要的童鞋也可以参考一下 状态栏通知布局custom_notification.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" an

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

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

自定义状态栏notification布局

布局定义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

安卓状态栏通知Status Bar Notification

安卓系统通知用户三种方式: 1.Toast Notification 2.Dialog Notification 3.Status Bar Notification Status Bar Notification,状态栏通知 发送一个状态栏通知必须用到两个类:NotificationManager,Notification 1.NotificationManager是一个系统Service,必须通过getSystemService()获取 NotificationManager notifica

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

安卓自定义状态栏颜色以与APP风格保持一致

我们知道IOS上的应用,状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,那安卓是否可以呢?若是在安卓4.4之前,答案是否定的,但在4.4之后,谷歌允许开发者自定义状态栏背景颜色啦,这是个不错的体验!若你手机上安装有最新版的qq,并且你的安卓SDK版本是4.4及以上,你可以看下它的效果: 实现此功能有两种方法: 1.在xml中设置主题或自定义style: Theme.Holo.Light.NoActionBar.TranslucentDecor Theme.Holo.NoActionBa