Android为Notification加上一个进度条

 

package com.notification;

import Android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RemoteViews;
import android.widget.Toast;

public class nofificationActivity extends Activity implements OnClickListener {

    private static final int NOTIFICATION_ID = 0x12;
    private Notification notification = null;
    private NotificationManager manager = null;

    public Handler handler;
    private int _progress = 0;
    private Thread thread = null;
    private boolean isStop = false;

    // 当界面处理停止的状态 时,设置让进度条取消
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        isStop = false;
        manager.cancel(NOTIFICATION_ID);

        super.onPause();
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn = (Button) findViewById(R.id.Button01);
        btn.setOnClickListener(this);
        notification = new Notification(R.drawable.icon, "带进条的提醒", System
                .currentTimeMillis());
        notification.icon = R.drawable.icon;

        // 通过RemoteViews 设置notification中View 的属性
        notification.contentView = new RemoteViews(getApplication()
                .getPackageName(), R.layout.custom_dialog);
        notification.contentView.setProgressBar(R.id.pb, 100, 0, false);
        notification.contentView.setTextViewText(R.id.tv, "进度" + _progress
                + "%");
        // 通过PendingIntetn
        // 设置要跳往的Activity,这里也可以设置发送一个服务或者广播,
        // 不过在这里的操作都必须是用户点击notification之后才触发的
        notification.contentIntent = PendingIntent.getActivity(this, 0,
                new Intent(this, remoteView.class), 0);
        // 获得一个NotificationManger 对象,此对象可以对notification做统一管理,只需要知道ID
        manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        isStop = true;
        manager.notify(NOTIFICATION_ID, notification);
        thread = new Thread(new Runnable() {

            @Override
            public void run() {
                Thread.currentThread();
                // TODO Auto-generated method stub
                while (isStop) {
                    _progress += 10;
                    Message msg = handler.obtainMessage();
                    msg.arg1 = _progress;
                    msg.sendToTarget();

                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        });
        thread.start();

        handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                // TODO Auto-generated method stub
                notification.contentView.setProgressBar(R.id.pb, 100, msg.arg1,
                        false);
                notification.contentView.setTextViewText(R.id.tv, "进度"
                        + msg.arg1 + "%");
                manager.notify(NOTIFICATION_ID, notification);

                if (msg.arg1 == 100) {
                    _progress = 0;
                    manager.cancel(NOTIFICATION_ID);
                    isStop = false;
                    Toast.makeText(nofificationActivity.this, "下载完毕", 1000)
                            .show();
                }
                super.handleMessage(msg);
            }
        };
    }
}

时间: 2024-12-02 21:00:37

Android为Notification加上一个进度条的相关文章

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

本文实例讲述了Android实现为Notification加上一个进度条的方法.分享给大家供大家参考,具体如下: package com.notification; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent;

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

本文实例讲述了Android实现为Notification加上一个进度条的方法.分享给大家供大家参考,具体如下: package com.notification; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent;

Android自定义View之圆形进度条式按钮_Android

介绍 今天上班的时候有个哥们问我怎么去实现一个按钮式的进度条,先来看看他需要实现的效果图. 和普通的圆形进度条类似,只是中间的地方有两个状态表示,未开始,暂停状态.而且他说圆形进度的功能已经实现了.那么我们只需要对中间的两个状态做处理就行了. 先来看看实现的效果图: 上面说了我们只需要处理中间状态的变化就可以了,对于进度的处理直接使用了弘洋文章中实现: http://blog.csdn.net/lmj623565791/article/details/43371299 下面开始具体实现. 具体实

【Android开发】高级组件-进度条

当一个应用在后台执行时,前台界面不会有任何信息,这是用户根本不知道程序是否在执行以及执行进度等,因此需要使用进度条来提示程序执行的进度.在Android中,进度条(ProgressBar)用于向用户显示某个耗时操作完成的百分比. 在屏幕中添加进度天,可以在XML布局文件中通过<ProgressBar>标记添加,基本语法格式如下: <ProgressBar     属性列表  > </ProgressBar> ProgressBar组件支持的XML属性如下所示: andr

android用的handler更新进度条但是显示不出来并且进度条的高不能改总是那么高

问题描述 android用的handler更新进度条但是显示不出来并且进度条的高不能改总是那么高 xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layo

Android view自定义实现动态进度条_Android

Android  自定义view实现动态进度条 效果图: 这个是看了梁肖的demo,根据他的思路自己写了一个,但是我写的这个貌似计算还是有些问题,从上面的图就可以看出来,左侧.顶部.右侧的线会有被截掉的部分,有懂得希望能给说一下,改进一下,这个过程还是有点曲折的,不过还是觉得收获挺多的.比如通动画来进行动态的展示(之前做的都是通过Handler进行更新的所以现在换一种思路觉得特别好),还有圆弧的起止角度,矩形区域的计算等!关于绘制我们可以循序渐进,比如最开始先画圆,然后再画周围的线,最后设置动画

Android编程开发实现带进度条和百分比的多线程下载

本文实例讲述了Android编程开发实现带进度条和百分比的多线程下载.分享给大家供大家参考,具体如下: 继上一篇<java多线程下载实例详解>之后,可以将它移植到我们的安卓中来,下面是具体实现源码: DownActivity.java: package com.example.downloads; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.net.H

Android view自定义实现动态进度条

Android  自定义view实现动态进度条 效果图: 这个是看了梁肖的demo,根据他的思路自己写了一个,但是我写的这个貌似计算还是有些问题,从上面的图就可以看出来,左侧.顶部.右侧的线会有被截掉的部分,有懂得希望能给说一下,改进一下,这个过程还是有点曲折的,不过还是觉得收获挺多的.比如通动画来进行动态的展示(之前做的都是通过Handler进行更新的所以现在换一种思路觉得特别好),还有圆弧的起止角度,矩形区域的计算等!关于绘制我们可以循序渐进,比如最开始先画圆,然后再画周围的线,最后设置动画

IOS swift 异步加载数据,并显示一个进度条

问题描述 IOS swift 异步加载数据,并显示一个进度条 网络获取数据使用的是NSURLConnection,异步请求.这个数据已经能够获得了.现在想要实现的是,通过登录界面输入账号什么的,点击提交按钮可以在显示进度条的同时执行post请求得到数据,如果这个数据不为空进度条消失并登录成功回到主界面,否者就提示有错. 希望小伙伴给个简单的例子,这样会更好理解 这个在安卓中是用AsyncTask实现的..线程一直都理不清,还请小伙伴们多多指导.谢谢!!!!! 解决方案 http://www.it