`
h416756139
  • 浏览: 365851 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Notification中显示ProgressBar组件

阅读更多
1. 在Notification中显示ProgressBar,效果图:


 

2. 实现步骤:
    (1)在res/layout/目录中定义notification.xml文件,内容如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout  
    xmlns:android = "http://schemas.android.com/apk/res/android"  
    android:layout_width = "fill_parent"  
    android:layout_height = "fill_parent"  
    android:gravity = "center_vertical"  
    >        
    <ImageView   
        android:id = "@+id/image"     
        android:layout_width = "wrap_content"     
        android:layout_height = "fill_parent"     
        />  
    <ProgressBar  
        android:id = "@+id/progressBar"  
        android:layout_width = "180dip"  
        android:layout_height = "wrap_content"  
        style = "?android:attr/progressBarStyleHorizontal"  
        android:layout_gravity = "center_vertical"  
        />  
    <TextView  
        android:id = "@+id/tip"  
        android:layout_width = "wrap_content"     
        android:layout_height = "wrap_content"  
        android:textSize = "16px"  
        android:textColor = "#FF0000"  
        />  
</LinearLayout>  

    (2)主Activity实现:
public class NotificationActivity extends Activity {  
  
    private NotificationManager mNotificationManager;    
    private RemoteViews mRemoteViews;  
    private Intent mIntent;  
    private PendingIntent mPendingIntent;  
    private int mProgress = 0;  
    private Notification notification = new Notification();  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        /** 
         * Activity主布局,布局中存在一个Button,单击Button后启动多线程并向StatusBar发送Notification提醒。 
         */  
        setContentView(R.layout.main);  
        /** 
         * 获取Notification管理器。 
         */  
        mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);  
        /** 
         * 利用notification.xml文件创建RemoteView对象。 
         */  
        mRemoteViews = new RemoteViews(getPackageName(), R.layout.notification);  
        /** 
         * 单击Notification时发出的Intent消息。 
         */  
        mIntent = new Intent(NotificationActivity.this, 自定义Activity.class);  
        mPendingIntent = PendingIntent.getActivity(NotificationActivity.this, 0, mIntent, 0);  
        /** 
         * 获取Button对象,设置单击事件,单击后启动多线程向StatusBar发送Notification提醒。 
         */  
        Button sendNotification = (Button) findViewById(R.id.sendNotification);  
        sendNotification.setOnClickListener(new OnClickListener() {  
            public void onClick(View view) {  
                /** 
                 * 设置Notification的Icon图标。 
                 */  
                notification.icon = R.drawable.icon;  
                mRemoteViews.setImageViewResource(R.id.image, R.drawable.icon);  
                /** 
                 * 启动多线程更新Notification提醒。 
                 */  
                new Thread(new Runnable() {  
                    public void run() {  
                        for (int i = 0; i < 20; i++) {  
                            mProgress = (i + 1) * 5;  
                            try {  
                                if (i < 19) {  
                                    Thread.sleep(1000);  
                                } else {  
                                    Thread.currentThread().interrupt();  
                                }  
                            } catch (InterruptedException e) {  
                                e.printStackTrace();  
                            }  
                            Message message = new Message();  
                            mHandler.sendMessage(message);  
                        }  
                    }  
                }).start();  
            }  
        });  
    }  
  
    private Handler mHandler = new Handler() {  
        public void handleMessage(Message message) {  
            /** 
             * 设置RemoteView组件中进度条的进度值。 
             */  
            mRemoteViews.setProgressBar(R.id.progressBar, 100, mProgress, false);  
            mRemoteViews.setTextViewText(R.id.tip, "Download:" + mProgress + "%");  
            /** 
             * 给Notification设置布局。 
             */  
            notification.contentView = mRemoteViews;  
            /** 
             * 给Notification设置Intent,单击Notification会发出这个Intent。 
             */  
            notification.contentIntent = mPendingIntent;  
            /** 
             * 发送Notification提醒。 
             */  
            mNotificationManager.notify(0, notification);  
  
            super.handleMessage(message);  
        }  
    };  
}  转自:http://blog.csdn.net/mayingcai1987/archive/2011/03/06/6226685.aspx

 

  • 大小: 17.9 KB
分享到:
评论

相关推荐

    android-notification-progressbar

    而ProgressBar则是一个可视组件,用于显示进度,常见于加载数据或者执行长时间操作时。当涉及到`android-notification-progressbar`,我们关注的是如何在通知中嵌入一个进度条,实时反映后台任务的进度。 首先,...

    android-progressbar and notification

    `Notification`则是Android系统提供的一个强大功能,它可以在状态栏中显示消息,并允许用户在任何时候与其交互。创建`Notification`需要`NotificationChannel`(Android O及以上版本)和`NotificationCompat.Builder...

    android ProgressBar 全部的用法

    在AsyncTask的`onPreExecute()`方法中显示进度条,在`onProgressUpdate()`更新进度,在`onPostExecute()`方法中隐藏进度条。 六、Infinite ProgressBar(无限循环进度条) 通过在代码中设置`ProgressBar....

    android-testnotification-progressbar

    `ProgressBar`组件在Android中用于显示进度,它可以是水平的、垂直的或者是圆形的。当应用执行耗时任务,如下载、上传或解压文件时,`ProgressBar`能够提供用户体验反馈。以下是如何在布局文件中添加一个水平进度条...

    应用源码之(ProgressBar进度条).zip

    使用IntentService处理长时间运行的任务时,可以在Service中创建一个Notification,其中包含一个RemoteViews来显示一个正在运行的ProgressBar。 7. **CircularProgressBar(圆环形进度条)**: 除了默认的水平条...

    Android应用源码之(ProgressBar进度条)-IT计算机-毕业设计.zip

    8. **ProgressBar与Notification**:在某些情况下,例如后台服务执行任务时,进度条也可以在通知栏中显示,这涉及到Notification的构建和更新。 这个源码项目将帮助学习者了解如何在实际应用中集成和控制...

    带进度条,以及动态状态图标的Notification

    在Android开发中,`Notification`是一种非常重要的组件,它用于向用户展示应用在后台运行时的重要信息或状态更新。在标题“带进度条,以及动态状态图标的Notification”中,我们关注的重点是如何在`Notification`中...

    安卓界面之全部UI组件学习源代码

    - `Notification`: 在状态栏显示消息,提醒用户有新事件。 8. **滑动抽屉组件** - `DrawerLayout`: 实现侧滑菜单,常用于导航栏。 9. **自定义组件** - 学习如何根据需求创建自定义视图,扩展Android UI的可能...

    自定义notification

    在Android开发中,Notification是一种非常重要的用户界面组件,它用于在状态栏中向用户显示信息,即使应用在后台运行也能保持与用户的互动。本主题主要关注如何自定义Notification,特别是添加进度条以及实现按钮...

    类似电子市场中下载管理中进度条显示下载进度的Demo

    接下来,为了在另一个Activity(ActivityB)中显示进度条,我们需要监听下载服务的状态。可以通过绑定到服务,利用`DownloadBinder`获取下载进度,然后更新UI上的ProgressBar。此外,ActivityB还可以通过注册...

    Android 进度条源码-IT计算机-毕业设计.zip

    1. **ProgressBar组件**:Android中的ProgressBar是一个视图组件,分为两种类型:indeterminate(不确定进度)和determinate(确定进度)。前者通常用于表示操作的不可预知持续时间,如加载动画;后者则用于显示具体...

    Android实现为Notification加上一个进度条的方法

    在Android开发中,Notification是一个非常重要的组件,用于在状态栏显示提醒信息,即使应用不在前台运行也能触达用户。在某些场景下,如文件下载、上传或后台任务执行,我们可能需要在Notification中添加一个进度条...

    TestDownLoad

    1. **ListView的使用**:ListView是Android中用于显示大量数据的视图组件,通过Adapter来绑定数据源,它会自动处理滚动和复用Item视图,以提高性能。在创建ListView时,需要定义一个布局文件作为Item模板,并在...

    Progress的实现

    在onPreExecute()方法中显示进度条,在onProgressUpdate()方法中更新进度,在onPostExecute()方法中隐藏进度条。 6. **Loader API**:在Android Framework中,Loader API设计用于异步加载数据,同时允许在配置更改...

    15个android小程序

    TextView是Android中最常用的文本显示组件,可以显示单行或多行文本,支持文字样式、链接、对齐方式、换行等特性。通过设置text属性,可以动态改变显示的文本。 7. **Menu**: Android菜单通常在Activity的选项栏...

    Android ProgressDialog Demo

    在Android开发中,ProgressDialog是一个非常重要的组件,它用于在用户等待长时间操作完成时显示一个进度指示器,给予用户反馈,防止界面无响应而产生不愉快的用户体验。在本"Android ProgressDialog Demo"中,我们将...

    Android progress前台运算-IT计算机-毕业设计.zip

    2. **ProgressBar**: 这是一个可自定义的视图,可以在布局文件中作为独立组件使用,或者嵌入到其他视图中。它可以是indeterminate或determinate,后者可以设置最大值和当前值。 3. **AsyncTask**: 这是Android提供...

    Android应用源码之在Listview显示多任务下载效果。可以中途停止类似360手机助手.zip

    1. **ListView组件**:ListView是Android中的一个视图组件,用于展示大量数据的列表形式。它可以通过Adapter来动态加载数据,支持滚动和多项选择等特性,非常适合用来展示多任务下载列表。 2. **Adapter**:Adapter...

    PrimeFaces学习教程

    **2.7.2 NotificationBar** - 通知栏,用于显示系统或应用级别的通知。 #### 2.8 对话框 **2.8.1 ConfirmDialog** - 确认对话框,用于获取用户确认。 **2.8.2 Dialog** - 通用对话框,可用于多种场景。 #### 2.9 ...

    Android学习新手笔记

    - ProgressBar、ProgressDialog进度条组件的使用。 - AlertDialog对话框的不同实现方式以及自定义实现。 11. Activity的使用和跳转 - Activity的基本配置和生命周期理解。 - Activity之间的跳转和信息传递。 -...

Global site tag (gtag.js) - Google Analytics