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/java的复杂对象的深拷贝和浅拷贝
  2. Android studio中音频播放与进度条联动
  3. Android 弧形进度条
  4. 不让屏幕翻转扰乱你的进度对话框
  5. android 使用Intent传递对象 Serializable 或者 Parcelabel 《第
  6. Android之进度条
  7. ProgressBar进度条
  8. Android 中带有进度条效果的按钮(Button)
  9. Android Material Design 进度条 自定义进度条样式

随机推荐

  1. Android 事件冒泡及捕获
  2. android:imeOptions指定了弹出键盘时右下
  3. Android设置一个按钮右对齐
  4. Android应用商店——Splash页面的实现,And
  5. android java代码的启动:app_process
  6. cocos2dx在Eclipse下编译报错:Cannot fin
  7. android启动界面
  8. Qt For Android(安卓)文件存储
  9. Android圆环控件
  10. Google 将 Android 4.0.4 源代码送交 AOS