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);
}
};
}
}

更多相关文章

  1. android Activity启动初始化与实例化Activty对象的用途研究
  2. android上方显示进度的进度条
  3. Cordova + vue 打包安卓(Android) apk 及 Apk版本自动升级及安装
  4. Android 中下载文件到sdcard和进度条小结
  5. android下载的进度条
  6. Android绘制文本对象FontMetrics介绍及繪製文本
  7. Android环形进度条(安卓默认形式)实例代码
  8. Android 中的 Looper 对象
  9. android进度条对话框

随机推荐

  1. Android(安卓)Robotium自动化测试入门
  2. 修改air for android Manifest.xml下默认
  3. 14条Android(安卓)Studio常用的的配置
  4. 修改Button的样式!
  5. Android(安卓)的消息队列模型
  6. 修改android virtual device路径
  7. android:layout_gravity 和 android:grav
  8. 巧解Android时区加载过慢的问题
  9. Android(安卓)SDK 21.1 发布,Android(安卓
  10. Android(安卓)EditText属性总结