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的内置方法`setWebChromeClient()`和自定义的`...
ProgressBar progressBar = (ProgressBar) loadingDialog.getDialog().findViewById(R.id.progress_bar); progressBar.setColorSchemeColors(Color.BLUE, Color.RED); ``` 4. **关闭Dialog**: - 当加载完成...
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) { ...
以下是一个简单的例子: ```xml android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp"> android:id="@+id/progress_bar" ...
- 使用默认的CircularProgressDrawable:在styles.xml中定义一个样式,设置`android:progressDrawable`为`@android:drawable/progress_indeterminate_horizontal`,并使用`<shape>`标签将其转换为圆形。 - 自定义...
在Android开发中,Dialog对话框是一种非常常见的用户交互元素,用于提供临时...通过研究"所有Dialog对话框.zip"中的例子,开发者可以深入理解每种Dialog的用法,以及如何在自己的应用中恰当地使用它们,提升用户体验。
Dialog通常有两种类型:Alert Dialog和Progress Dialog。 2. **Alert Dialog** Alert Dialog是用户交互常用的Dialog,包含标题、消息内容、按钮等元素。创建Alert Dialog主要通过`AlertDialog.Builder`类来实现,...
这篇博客"Android 对话框的各种使用例子"提供了关于如何在Android中实现不同类型的对话框的实例。 首先,对话框分为几种基本类型: 1. **AlertDialog**:这是最常见的对话框类型,通常包含一个标题、内容和一个或...
在这个例子中,内容视图是一个包含TextView和ProgressBar的布局,布局文件名为`dialog_progress.xml`。 接着,我们找到布局文件中的TextView(`tv_loading`)和ProgressBar(`progressBar`),并调整Dialog的宽度为...
android:id="@+id/my_progress_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" app:dialogTitle="正在加载..." app:dialogMessage="请稍候..." /> ``` 7. **在代码中...
在这个特定的例子中,我们看到一个名为"Dialog"的压缩包子文件,这表明我们将深入探讨Android中的对话框(Dialog)组件。 对话框在Android应用中扮演着重要的角色,它用于向用户显示临时信息或者需要用户做出决定的...
android加载框效果,本例子有几种效果弹出dialog,本例子主要自定义SVProgressHUD 类,主要代码如下: public enum SVProgressHUDMaskType { None, // 允许遮罩下面控件点击 Clear, // 不允许遮罩下面控件...
case PROGRESS_DIALOG://创建进度对话框 pd=new ProgressDialog(this);//创建进度对话框 pd.setMax(100);//设置最大值 pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setTitle(R.string....
`<output>`标签用于展示计算结果或脚本生成的内容,`<progress>`和`<meter>`用于显示进度条和度量值。 此外,`<details>`和`<summary>`标签提供了一种折叠式的内容展示方式,用户可以点击摘要来展开详细信息。`...
标题中的“test-progress-listctrl.zip_listctrl_listctrl progress_listctrl 进”表明这是一个关于如何在`ListCtrl`控件中实现进度条显示的示例项目。描述中提到的“模拟进度显示,类似于下载56%进度条”进一步确认...
progress_dialog = QProgressDialog("执行任务", "取消", 0, total_steps) for i in range(total_steps): # 模拟耗时操作 time.sleep(0.1) # 更新进度条 progress_dialog.setValue(i + 1) # 检查用户...
模仿遇见应用进度条(Progress)效果,该效果实现了模仿了进度条的效果的,很类似该效果的,这个例子是模仿遇见加载时候的进度条,效果如图,代码里做了两个版本,一个是dialog形式,一个是toast形式等。
在Android开发中,对话框(Dialog)是一种非常重要的组件,用于与用户进行交互,提供临时信息或者接收用户的输入。在本篇文章中,我们将深入探讨如何在Android应用中使用各种类型的对话框,包括基本对话框...
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)**:...