【友盟+】开发者社区

自定义通知栏样式代码示例

发表于 2015-7-10 13:35:34 | |阅读模式

老辛
老辛 发表于 2015-7-10 13:35:34 | 显示全部楼层 |阅读模式
我们可以重写UmengMessageHandler类的getNotification方法来自定义通知栏的样式,以下代码是一个范例。

[Java] 纯文本查看 复制代码
@Override 
public Notification getNotification(Context context, UMessage msg) {     
switch (msg.builder_id) {     
case 1:         
    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);         
    RemoteViews myNotificationView = new RemoteViews(context.getPackageName(), R.layout.notification_view);         
    myNotificationView.setTextViewText(R.id.notification_title, msg.title);            
    myNotificationView.setTextViewText(R.id.notification_text, msg.text);            
    myNotificationView.setImageViewBitmap(R.id.notification_large_icon, getLargeIcon(context, msg));      
    myNotificationView.setImageViewResource(R.id.notification_small_icon, getSmallIconId(context, msg));         
    builder.setContent(myNotificationView);         
    Notification mNotification = builder.build();         
    //由于Android v4包的bug,在2.3及以下系统,Builder创建出来的Notification,并没有设置RemoteView,故需要添加此代码         
    mNotification.contentView = myNotificationView;         
    return mNotification;     
default:         
    //默认为0,若填写的builder_id并不存在,也使用默认。         
    return super.getNotification(context, msg);    
}
}


下面的xml代码表示的是自定义通知的样式,左边是一个大图标,右边是一个小图标,中间是三行文本,
分别显示了通知的标题、内容和自定义信息。

[AppleScript] 纯文本查看 复制代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="64dp" >

    <ImageView
        android:id="@+id/notification_large_icon"
        android:layout_width="64dp"
        android:layout_height="64dp"
        android:scaleType="fitXY"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/notification_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="5dp"
        android:layout_toRightOf="@+id/notification_large_icon"
        android:text="Title" />

    <TextView
        android:id="@+id/notification_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/notification_title"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/notification_large_icon"
        android:text="Message" />


    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/notification_text"
        android:layout_marginLeft="10dp"
        android:textSize="10dp"
        android:layout_toRightOf="@+id/notification_large_icon"
        android:text="(嘿嘿,偷偷听告诉你,我是自定义的)" />
    
    <ImageView
        android:id="@+id/notification_small_icon"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:scaleType="fitXY"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginRight="5dp"
        android:layout_marginBottom="5dp"
        android:src="@drawable/ic_launcher" />

</RelativeLayout>


要使用自定义的通知栏样式,需要在新建通知时,设置与代码中对应的通知栏样式编号,在此范例中,通知栏样式编号是1,也就是builder_id的值为1。然后根据自定义的布局文件来建立RemoteViews,并且把建立的RemoteViews和通知的contentView做绑定,实现的通知栏样式类似如下图所示:

自定义通知

自定义通知





上一篇:我的部署的服务器无法访问外网,获取签名的时候访问不到
下一篇:android 获取不到device Token 怎么办

您需要登录后才可以发帖 登录 | 立即注册

本版积分规则

发表主题

精彩推荐

U-App即将升级,一站式运营你的“超级用户”
底部大福利,可优先体验内测账号哦~ 超级用户火了,因为互联网公司都感受到存量竞争的压力,App的运营核心
关于事件计算口径变更说明(2018.5.15)
影响范围:AppTrack产品全局数据1)计算基准的变更事件计算的周期基准变更:计算基于点击发生日期后续15天
友盟+大揭秘:阿里“亲橙里”的数据黑科技
4月28日,阿里首个智慧商业亲橙里开业。汇集盒马鲜生、天猫国际、天猫精灵、阿里小厨等众多业态,亲橙里通

关注我们

新浪微博
微信

欢迎关注友盟官方微博微信!

返回列表