`
Aga
  • 浏览: 218674 次
  • 性别: 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 webview 顶部进度条+旋转等待dialog例子

    这个"android webview 顶部进度条+旋转等待dialog例子"就是一个实现这些功能的示例项目。 首先,我们来看顶部进度条。在Android中,我们可以利用WebView的内置方法`setWebChromeClient()`和自定义的`...

    Android自定义loading Dialog

    ProgressBar progressBar = (ProgressBar) loadingDialog.getDialog().findViewById(R.id.progress_bar); progressBar.setColorSchemeColors(Color.BLUE, Color.RED); ``` 4. **关闭Dialog**: - 当加载完成...

    Android中ProgressDialog的简单示例

    builder.setView(R.layout.dialog_progress); final AlertDialog dialog = builder.create(); // 模拟耗时操作 new Thread(new Runnable() { @Override public void run() { for (int i = 0; i ; i += 5) { ...

    dialog 资源加载进度条

    以下是一个简单的例子: ```xml android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> android:id="@+id/progress_bar" ...

    实现圆形加载中效果自定义Dialog

    - 使用默认的CircularProgressDrawable:在styles.xml中定义一个样式,设置`android:progressDrawable`为`@android:drawable/progress_indeterminate_horizontal`,并使用`<shape>`标签将其转换为圆形。 - 自定义...

    所有Dialog对话框.zip

    在Android开发中,Dialog对话框是一种非常常见的用户交互元素,用于提供临时...通过研究"所有Dialog对话框.zip"中的例子,开发者可以深入理解每种Dialog的用法,以及如何在自己的应用中恰当地使用它们,提升用户体验。

    Android组件例子DialogProject

    Dialog通常有两种类型:Alert Dialog和Progress Dialog。 2. **Alert Dialog** Alert Dialog是用户交互常用的Dialog,包含标题、消息内容、按钮等元素。创建Alert Dialog主要通过`AlertDialog.Builder`类来实现,...

    Android 对话框的各种使用例子

    这篇博客"Android 对话框的各种使用例子"提供了关于如何在Android中实现不同类型的对话框的实例。 首先,对话框分为几种基本类型: 1. **AlertDialog**:这是最常见的对话框类型,通常包含一个标题、内容和一个或...

    Android自定义Dialog实现文字动态加载效果

    在这个例子中,内容视图是一个包含TextView和ProgressBar的布局,布局文件名为`dialog_progress.xml`。 接着,我们找到布局文件中的TextView(`tv_loading`)和ProgressBar(`progressBar`),并调整Dialog的宽度为...

    自定义MyProgressDialog控件的Demo

    android:id="@+id/my_progress_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" app:dialogTitle="正在加载..." app:dialogMessage="请稍候..." /> ``` 7. **在代码中...

    android 例子

    在这个特定的例子中,我们看到一个名为"Dialog"的压缩包子文件,这表明我们将深入探讨Android中的对话框(Dialog)组件。 对话框在Android应用中扮演着重要的角色,它用于向用户显示临时信息或者需要用户做出决定的...

    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....

    html标签学习与例子

    `<output>`标签用于展示计算结果或脚本生成的内容,`<progress>`和`<meter>`用于显示进度条和度量值。 此外,`<details>`和`<summary>`标签提供了一种折叠式的内容展示方式,用户可以点击摘要来展开详细信息。`...

    test-progress-listctrl.zip_listctrl_listctrl progress_listctrl 进

    标题中的“test-progress-listctrl.zip_listctrl_listctrl progress_listctrl 进”表明这是一个关于如何在`ListCtrl`控件中实现进度条显示的示例项目。描述中提到的“模拟进度显示,类似于下载56%进度条”进一步确认...

    基于PyQt5实现弹出任务进度条功能示例

    progress_dialog = QProgressDialog("执行任务", "取消", 0, total_steps) for i in range(total_steps): # 模拟耗时操作 time.sleep(0.1) # 更新进度条 progress_dialog.setValue(i + 1) # 检查用户...

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

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

    Android下使用对话框的例子

    在Android开发中,对话框(Dialog)是一种非常重要的组件,用于与用户进行交互,提供临时信息或者接收用户的输入。在本篇文章中,我们将深入探讨如何在Android应用中使用各种类型的对话框,包括基本对话框...

    GUI开发-如何实现在PyQt5窗口中弹出等待提示框-Python实例源码.zip

    self.progress_bar = QProgressBar(self.waiting_dialog) self.progress_bar.setGeometry(50, 50, 300, 25) self.progress_bar.setAlignment(Qt.AlignCenter) self.timer = QTimer() self.timer.timeout....

    对话框不同样式

    8. **进度对话框(Progress Dialog Box)**:在执行长时间操作时显示,以让用户知道程序仍在运行并显示当前进度。它可以是模态或非模态,有时还包含取消操作的选项。 9. **下拉对话框(Dropdown Dialog Box)**:...

Global site tag (gtag.js) - Google Analytics