`
Aga
  • 浏览: 213320 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

progress dialog例子

阅读更多
package org.cxz.research;

public interface IncreasePercentage {
	public void increase(int increment);
	public boolean isFull();
}


package org.cxz.research;

import java.util.Random;

public class FakeDownloader implements Runnable {
	IncreasePercentage mIncreaser = null;
	
	public FakeDownloader(IncreasePercentage increaser) {
		super();
		mIncreaser = increaser;
	}
	
	@Override
	public void run() {
		Random r = new Random();
		while(mIncreaser.isFull()){
			mIncreaser.increase(Math.abs(r.nextInt(10)));
			try {
				Thread.sleep(1000 * 1);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}

}



package org.cxz.research;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;

public class PercentageDialog extends Activity implements IncreasePercentage{
	
	private static interface DIALOG_IDS{
		public static final int PERCENTAGE_DIALOG = 0;
	}
	
	private ProgressDialog mPercentageDialog = null;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        showDialog(DIALOG_IDS.PERCENTAGE_DIALOG);
    }

	@Override
	protected void onResume() {
		new Thread(new FakeDownloader(this)).start();
		super.onResume();
	}

	@Override
	protected Dialog onCreateDialog(int id) {
		switch(id){
		case DIALOG_IDS.PERCENTAGE_DIALOG:
			mPercentageDialog = new ProgressDialog(this);
			mPercentageDialog.setProgress(0);
			mPercentageDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
			mPercentageDialog.setMessage("some msgs");
			mPercentageDialog.setMax(100);
			return mPercentageDialog;
		default:
			break;
		}
		return super.onCreateDialog(id);
	}

	@Override
	public void increase(final int increment) {
		runOnUiThread(new Runnable(){

			@Override
			public void run() {
				mPercentageDialog.setProgress(mPercentageDialog.getProgress() + increment);
				if(mPercentageDialog.getProgress() >= 100){
					mPercentageDialog.dismiss();
				}
			}
			
		});
		
	}

	@Override
	public boolean isFull() {
		return mPercentageDialog.isShowing();
	}
	
}

版本二:
package org.cxz.research;

import java.util.Observable;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class PercentageDialog extends Activity implements IncreasePercentage{
	
	private static interface DIALOG{
		public static final int PERCENTAGE_DIALOG = 0;
	}
	
	private static interface OPTION{
		public static final int START_DOWNLOADING = 10;
	}
	
	private ProgressDialog mPercentageDialog = null;
	private Observable mObservable = new Observable();
	private FakeDownloader mDownloader = new FakeDownloader(this);
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mObservable.addObserver(mDownloader);
    }

	protected void startDownload() {
		new Thread(mDownloader, "Fake Downloader").start();
		super.onResume();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		menu.add(0, OPTION.START_DOWNLOADING, 0, "start");
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch(item.getItemId()){
		case OPTION.START_DOWNLOADING:
			showDialog(DIALOG.PERCENTAGE_DIALOG);
			mPercentageDialog.setProgress(0);
			startDownload();
		}
		return true;
	}

	@Override
	protected Dialog onCreateDialog(int id) {
		switch(id){
		case DIALOG.PERCENTAGE_DIALOG:
			mPercentageDialog = new ProgressDialog(this);
			mPercentageDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
			mPercentageDialog.setMessage("some msgs");
			mPercentageDialog.setMax(100);
			return mPercentageDialog;
		default:
			break;
		}
		return super.onCreateDialog(id);
	}

	@Override
	public void increase(final int increment) {
		runOnUiThread(new Runnable(){

			@Override
			public void run() {
				mPercentageDialog.setProgress(mPercentageDialog.getProgress() + increment);
				if(mPercentageDialog.getProgress() >= 100){
					mPercentageDialog.dismiss();
					mObservable.notifyObservers();
				}
			}
			
		});
		
	}	
}


package org.cxz.research;

public interface IncreasePercentage {
	public void increase(int increment);
}


package org.cxz.research;

import java.util.Observable;
import java.util.Observer;
import java.util.Random;

public class FakeDownloader implements Runnable, Observer{
	IncreasePercentage mIncreaser = null;
	
	private boolean isFull = false;
	
	public FakeDownloader(IncreasePercentage increaser) {
		super();
		mIncreaser = increaser;
	}
	
	@Override
	public void run() {
		Random r = new Random();
		while(!isFull){
			mIncreaser.increase(Math.abs(r.nextInt(10)));
			try {
				Thread.sleep(1000 * 1);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}

	@Override
	public void update(Observable observable, Object data) {
		isFull = true;
	}
	
}

分享到:
评论

相关推荐

    Android 各个样式的加载框Progress效果 源码

    android加载框效果,本例子有几种效果弹出dialog,本例子主要自定义SVProgressHUD 类,主要代码如下: public enum SVProgressHUDMaskType { None, // 允许遮罩下面控件点击 Clear, // 不允许遮罩下面控件...

    又一个使用ProgressDialog创建Android进度条的例子.rar

     case PROGRESS_DIALOG://创建进度对话框  pd=new ProgressDialog(this);//创建进度对话框  pd.setMax(100);//设置最大值  pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);  pd.setTitle(R.string....

    模仿遇见应用进度条(Progress)效果.zip

    模仿遇见应用进度条(Progress)效果,该效果实现了模仿了进度条的效果的,很类似该效果的,这个例子是模仿遇见加载时候的进度条,效果如图,代码里做了两个版本,一个是dialog形式,一个是toast形式等。  

    Android下使用对话框的例子

    Android下使用对话框的例子,详细内容可以参见博客:http://www.cnblogs.com/plokmju/p/android_dialog.html

    模仿遇见应用进度条(Progress)效果

    模仿遇见应用进度条(Progress)效果,该效果实现了模仿了进度条的效果的,很类似该效果的,这个例子是模仿遇见加载时候的进度条,效果如图,代码里做了两个版本,一个是dialog形式,一个是toast形式等。

    Visual C++ 编程资源大全(英文源码 表单)

    23.zip Dialog with Splash Screen Example Code... Splash对话框的例子(18KB)<END><br>24,24.zip Class to select directory 选择目录的类(13KB)<END><br>25,25.zip Class to select directory ...

    VB编程资源大全(源码 控制)

    1,listview.ZIP 演示使用listview控制, 作出资源管理器中目录树中的效果 (7KB) 2,dirview.ZIP 装入整个 c 盘目录到 treeview (4KB) 3,progress.ZIP 演示使用win95的进度条(3KB) 4,progbar.ZIP ...

    swtchoices:显示 SWT 多个选项的对话框

    它的灵感来自于提供的 DialogBox。 与其实现相反,该项目提供的对话框使用各自平台的本机小部件,并且支持键盘交互。 例子 此基本示例显示一个对话框,其中包含三个选项: // Create choices ChoiceItem [] items...

    Delphi专业 界面 控件Skin++ For Delphi (一)

    Buttons、Static、Controls with ScrollBar(带滚动条的控件)、Splitter、TabControls、TrackBar & Progress、Misc Controls、Dialog、DataControls 6.1 Buttons 该部分我们演示了Skin++对Delphi的各种类型的按钮...

    Delphi 专业 界面 控件 Skin++ For Delphi(二)

    Buttons、Static、Controls with ScrollBar(带滚动条的控件)、Splitter、TabControls、TrackBar & Progress、Misc Controls、Dialog、DataControls 6.1 Buttons 该部分我们演示了Skin++对Delphi的各种类型的按钮...

    flutter_overlay:用于flutter的透明浮动层,可以以编程方式显示和关闭子级。 适用于iOS,Android和Web

    flutter_overlay 用于扑动的透明浮动层,可以以编程方式显示和闭合孩子。 适用于iOS,Android和Web。 内容 例子 ... child : CircularProgressIndicator (valueColor : AlwaysStoppedAnimation ( Colo

    asp.net知识库

    用于弹出ModalDialog进行数据选择的控件 使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的...

Global site tag (gtag.js) - Google Analytics