Android倚天剑之Notification之动感地带

标签: android 倚天剑 notification | 发表时间:2013-06-09 02:05 | 作者:leverage_1229
出处:http://blog.csdn.net

        上文我们介绍怎样管理和删除通知,以及怎样实现保存用户预期导航体验的通知。本文作为Android平台Notification的最终章,我们将会给通知融入更多DIY的元素,大胆地在这把“倚天剑”上烙下自己的印记^-^。在此之前,先来看下如何在通知中显示一个进度条。

一、显示进度的通知

        通知可以包括一个动画进度指示器以显示用户正在运行的操作的进度状态。如果你能估计这种操作需要花费多长时间,可以使用“determinate”形式的指示器(一个progress bar)。如果你不能估计花费的时间,那就使用“indeterminate”形式的指示器。

1.显示一个固定的时间进度指示器

(1).技术要点

调用setProgress()方法添加进度指示器到你的通知中。

(2).代码陈列

final NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setContentInfo(String.valueOf(++progressNum))
            .setContentTitle("Picture Download")
            .setContentText("Download in progress")
            .setDefaults(Notification.DEFAULT_ALL)
            .setLargeIcon(icon)
            .setSmallIcon(R.drawable.stat_notify_gmail)
            .setTicker("Progress Notification")
            .setOngoing(true);
        // Start a lengthy operation in a background thread
        new Thread(new Runnable() {
            @Override
            public void run() {
                int incr;
                // Do the "lengthy" operation 20 times
                for (incr = 0; incr <= 100; incr+=5) {
                    builder.setProgress(100, incr, false);
                    mNotiMgr.notify(PROGRESS_NOTI_ID, builder.build());
                    
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        Log.d(TAG, "sleep failure");
                    }
                }
                builder.setContentText("Download complete")
                    .setProgress(0, 0, false)
                    .setOngoing(false);
                mNotiMgr.notify(PROGRESS_NOTI_ID, builder.build());
            }
        }).start();
(3).效果展示

2.显示一个持续的Activity指示器

(1).技术要点

调用setProgress(0, 0, true)添加Activity指示器到你的通知中,前面两个参数可以忽略。

(2).代码陈列

builder.setProgress(100, incr, false);
mNotiMgr.notify(0, mBuilder.build());

 

(3).效果展示

二、自定义样式的通知

        通知框架允许你自定义通知布局,它在一个RemoteViews对象中定义了通知的布局。自定义布局通知和正常的通知类似,它们都是基于一个RemoteViews定义在一个XML布局文件中。自定义通知的可用高度取决于通知view的布局。正常view布局限制为64dp,展开view布局限制为256dp。自定义通知布局,通过实例化一个RemoteViews对象然后inflates一个xml布局文件启动。不再调用setContentTitle()方法,而使用setContent()方法来设置自定义通知的内容细节。使用这个方法在RemoteViews中来设置view子类的值。

1.技术要点

(1).为通知创建一个单独的xml布局文件。

(2).在你的应用程序中,使用RemoteViews方法来定义你通知的icon和文本。调用setContent()方法put这个RemoteViews对象到你的NotificationCompat.Builder中。避免正在RemoteViews对象中设置Drawable背景,因为你的文本颜色可能会变的看不清。

2.代码陈列

工程包目录

自定义样式通知创建和发布方法:showCustomNoti()

    /**
     * 自定义样式通知
     */
    private void showCustomNoti() {
        RemoteViews views = new RemoteViews(getPackageName(), R.layout.custom);
        Intent intent = new Intent(INTENT_ACTION);
        intent.putExtra("isPlay", true);
        
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
        views.setOnClickPendingIntent(R.id.play_pause_music, pendingIntent);
        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setContent(views)
            .setDefaults(Notification.DEFAULT_ALL)
            .setLargeIcon(icon)
            .setSmallIcon(R.drawable.music_icon)
            .setTicker("Custom Notification")
            .setOngoing(true);
        mNotiMgr.notify(CUSTOM_NOTI_ID, builder.build());
    }

自定义通知布局文件:custom.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical" >

    <ImageView
        android:id="@+id/songer"
        android:layout_width="64dp"
        android:layout_height="64dp"
        android:src="@drawable/songer" />
    
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:layout_weight="1">
        
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/song_name"
            android:textSize="18sp"
            android:gravity="center_horizontal" />
        
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/songer_name"
            android:textSize="14sp"
            android:gravity="center_horizontal" />
        
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:layout_weight="1" >

        <ImageView
            android:id="@+id/last_music"
            android:layout_width="0dp"
            android:layout_height="48dp"
            android:layout_weight="1"
            android:src="@drawable/music_previous" />

        <ImageView
            android:id="@+id/play_pause_music"
            android:layout_width="0dp"
            android:layout_height="48dp"
            android:layout_weight="1"
            android:src="@drawable/music_play" />

        <ImageView
            android:id="@+id/next_music"
            android:layout_width="0dp"
            android:layout_height="48dp"
            android:layout_weight="1"
            android:src="@drawable/music_next" />
    </LinearLayout>

</LinearLayout>

3.效果展示

   

4.源码下载

点击下载源码

作者:leverage_1229 发表于2013-6-9 2:05:50 原文链接
阅读:121 评论:0 查看评论

相关 [android 倚天剑 notification] 推荐:

Android倚天剑之Notification之动感地带

- - CSDN博客推荐文章
        上文我们介绍怎样管理和删除通知,以及怎样实现保存用户预期导航体验的通知. 本文作为Android平台Notification的最终章,我们将会给通知融入更多DIY的元素,大胆地在这把“倚天剑”上烙下自己的印记^-^. 在此之前,先来看下如何在通知中显示一个进度条.         通知可以包括一个动画进度指示器以显示用户正在运行的操作的进度状态.

Android的状态栏通知(Notification)

- - CSDN博客移动开发推荐文章
通知用于在状态栏显示消息,消息到来时以图标方式表示,如下:. 如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息. 作者:jaycee110905 发表于2013-2-22 22:05:11 原文链接. 阅读:73 评论:0 查看评论.

苹果信息推送服务(Apple Push Notification Service)使用总结

- - IT技术博客大学习
标签:   Push   信息推送. 苹果信息推送服务(Apple Push Notification Service),是由苹果官方提供的消息推送服务. 推送形式包括顶部消息条、声音以及badge number()有了APNS,应用程序可在任意状态接收到与程序有关的消息(包括运行状态not running,foreground以及background),由于在大多数情况下,iOS中最多只有一个应用能处于active状态,所以,APNS为应用的交互提供了极大的便利.

Android 遥控车

- CasparZ - LinuxTOY
您确定您真的会用 Android 手机玩赛车. 16 岁的法国学生 Jonathan Rico 使用 Android 手机通过蓝牙实现了对改装玩具汽车的遥控. 操控的方式和那些标榜的智能手机游戏一样,使用重力感应,差别是这次控制的是现实世界中的遥控汽车. 收藏到 del.icio.us |.

Android免费?毛

- Ruby - FeedzShare
来自: 36氪 - FeedzShare  . 发布时间:2011年08月17日,  已有 2 人推荐. 微软CEO Steve Ballmer在预测竞争对手产品时通常口无遮拦. 比如他去年抨击Google的Android战略时,很多人都不屑一顾. 接着Android蚕食了微软的地盘,后来又开始侵犯苹果的地盘.

GetEd2k (Android应用)

- 某牢 - eMule Fans 电骡爱好者
GetEd2k是一个Android应用程序,作者是anacletus. 此应用可以帮助你把网页中的电驴(eDonkey) 链接添加到你个人电脑的电驴客户端里,不过前提是你的客户端开启了用于远程控制的Web interface(Web服务器,网页接口,Web界面),当然,eMule(电骡), MLDonkey 和 aMule 都支持该功能,所以这三种主流电驴客户端的用户都可以使用GetEd2k.

Android 4.0发布

- coofucoo - Solidot
Shawn the R0ck 写道 "2011年10月19日早上10点,谷歌与三星联手在香港发布了Android 4.0和Galaxy Nexus. " Android 4.0 的主要特性包括:更精细的UI,加强多任务和通知功能,锁屏下可打开摄像头和浏览通知,改进文本输入和拼写检查;增强视频录制和图像编辑功能,支持剪裁和旋转图片、消除红眼、添加效果等;面部识别解锁;Android Beam允许两台支持NFC的设备之间交换应用程序、联系人、音乐和视频;Wi-Fi Direct,蓝牙HDP,等等.

NoScript For Android发布

- John - Solidot
用于屏蔽脚本的浏览器流行扩展NoScript发布了Android版本. 开发者称已经在Firefox for Android测试过,此外也应该能工作在基于Maemo的设备上. 移动版NoScript可以帮助移动用户抵抗基于脚本的攻击. Android平台上的扩展功能和桌面版相似,允许用户对每个网站单独设置脚本执行许可.

Android入门:ContentProvider

- - ITeye博客
一、ContentProvider介绍. ContentProvider翻译为“内容提供者”;. 定义:指该应用包含一些方法,供外界访问,其他应用程序可以调用该方法,比如如果应用A创建了一个数据库“test.db”,默认是私有的,即其他应用程序不能对其进行操作,但是如果应用A使用了ContentProvider,则其他应用程序可以访问该数据库;.