android-带进度条的系统通知栏消息

效果图:

主界面只有一个按钮就不上文件了

通知栏显示所用到的布局文件content_view.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00000000"
    android:orientation="vertical" 
    android:padding="5dp">

    <ImageView 
        android:id="@+id/content_view_image"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:src="@drawable/logo"
        
        />
    <TextView
        android:id="@+id/content_view_text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0%"
        android:textColor="#000000"
        android:layout_toRightOf="@id/content_view_image"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="15dp"
      />
    <ProgressBar 
        android:id="@+id/content_view_progress"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:max="100"
        android:layout_below="@id/content_view_image"
        android:layout_marginTop="4dp"
        />
    
</RelativeLayout>

主运行类:

package yyy.testandroid4;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.app.AlertDialog.Builder;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager.NameNotFoundException;
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 TestAndroid4Activity extends Activity {
    
    
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            switch (msg.what) {
            case 0:
                notif.contentView.setTextViewText(R.id.content_view_text1, len+"%");
                notif.contentView.setProgressBar(R.id.content_view_progress, 100, len, false);
                manager.notify(0, notif);
                
                break;
            case 1:
                Toast.makeText(TestAndroid4Activity.this, "下载完成", 0).show();
                break;
            default:
                break;
            }
        }
        
    };
    
    private Button update,cancel;
    private int localVersion,serverVersion;
    private int len;
    private NotificationManager manager;
    private Notification notif;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        update = (Button) findViewById(R.id.update);
      
        update.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                //点击通知栏后打开的activity
                Intent intent = new Intent(TestAndroid4Activity.this,OtherActivity.class);
                
                PendingIntent pIntent = PendingIntent.getActivity(TestAndroid4Activity.this, 0, intent, 0);
                     manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                notif = new Notification();
                notif.icon = R.drawable.logo;
                notif.tickerText = "新通知";
                //通知栏显示所用到的布局文件
                notif.contentView = new RemoteViews(getPackageName(), R.layout.content_view);
                notif.contentIntent = pIntent;
                manager.notify(0, notif);
                new DownLoadThread().start();
            }
        });
        
       
        
    }
  }
    
    private class DownLoadThread extends Thread{
        private Timer timer = new Timer();
        @Override
        public void run() {
            // TODO Auto-generated method stub
            super.run();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    
                    Message msg = new Message();
                    msg.what = 0;
                    msg.obj = len;
                    handler.sendMessage(msg);
                    
                    if(len == 100){
                        timer.cancel();
                        handler.sendEmptyMessage(1);
                    }
                
                }
            }, 0, 1000);
            len = 0;
            try {
                while(len < 100){
                    len++;
                    Thread.sleep(1000);
                }
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }
    
    
}

 

android-带进度条的系统通知栏消息,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。