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加载框效果,本例子有几种效果弹出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....
模仿遇见应用进度条(Progress)效果,该效果实现了模仿了进度条的效果的,很类似该效果的,这个例子是模仿遇见加载时候的进度条,效果如图,代码里做了两个版本,一个是dialog形式,一个是toast形式等。
Android下使用对话框的例子,详细内容可以参见博客:http://www.cnblogs.com/plokmju/p/android_dialog.html
模仿遇见应用进度条(Progress)效果,该效果实现了模仿了进度条的效果的,很类似该效果的,这个例子是模仿遇见加载时候的进度条,效果如图,代码里做了两个版本,一个是dialog形式,一个是toast形式等。
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 ...
1,listview.ZIP 演示使用listview控制, 作出资源管理器中目录树中的效果 (7KB) 2,dirview.ZIP 装入整个 c 盘目录到 treeview (4KB) 3,progress.ZIP 演示使用win95的进度条(3KB) 4,progbar.ZIP ...
它的灵感来自于提供的 DialogBox。 与其实现相反,该项目提供的对话框使用各自平台的本机小部件,并且支持键盘交互。 例子 此基本示例显示一个对话框,其中包含三个选项: // Create choices ChoiceItem [] items...
Buttons、Static、Controls with ScrollBar(带滚动条的控件)、Splitter、TabControls、TrackBar & Progress、Misc Controls、Dialog、DataControls 6.1 Buttons 该部分我们演示了Skin++对Delphi的各种类型的按钮...
Buttons、Static、Controls with ScrollBar(带滚动条的控件)、Splitter、TabControls、TrackBar & Progress、Misc Controls、Dialog、DataControls 6.1 Buttons 该部分我们演示了Skin++对Delphi的各种类型的按钮...
flutter_overlay 用于扑动的透明浮动层,可以以编程方式显示和闭合孩子。 适用于iOS,Android和Web。 内容 例子 ... child : CircularProgressIndicator (valueColor : AlwaysStoppedAnimation ( Colo
用于弹出ModalDialog进行数据选择的控件 使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的...