progressdialog

时间:2024-05-28 13:49:42编辑:coo君

android进度条怎么显示百分比

显示百分比需要自己计算加载的内容,以下以webView示例,webView加载网页的时候可以增加进度条:
1.从webView中获取设置
WebSettings sws = webView.getSettings();
sws.setSupportZoom(true);
sws.setBuiltInZoomControls(true);
webView.setInitialScale(25);
webView.getSettings().setUseWideViewPort(true);

2.注册setWebChromeClient事件
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activity和Webview根据加载程度决定进度条的进度大小
// 当加载到100%的时候 进度条自动消失
//WebViewProgressActivity.this.setTitle("Loading...");
//WebViewProgressActivity.this.setProgress(progress * 100);
if (progress == 100) {
progressBar.setVisibility(View.GONE);
//WebViewProgressActivity.this.setTitle("完成");
}
}
});

3.注意在onProgressChanged中处理进度,progress就是进度值。


android 怎样设置dialog的背景

关键是设置dialog的style, style的定义如下:[html] view plaincopyprint? @android:color/transparent true true false 其中@android:color/transparent就是#00000000, 前两个0表示透明度,后面6个0表示颜色另外还可以加上[html] view plaincopyprint?@null


怎么改变progressDialog消息字体字号

(一)先把完整代码贴出来:
/** Called when the activity is first created. */
private static final int DLG_SHOW = 0;

private TextView mTextView;
private Button mButton, btnDialog;
private EditText mEditText;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//dialog
btnDialog = (Button) findViewById(R.id.Button01);
btnDialog.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
showDialog(DLG_SHOW);
}

});
}

@Override
protected Dialog onCreateDialog(int id) {

if (id == DLG_SHOW) {
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("loading");
dialog.setCancelable(true);
return dialog;
}
return super.onCreateDialog(id);
}

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
View v = dialog.getWindow().getDecorView();
setDialogText(v);
super.onPrepareDialog(id, dialog);
}

private void setDialogText(View v) {

if (v instanceof ViewGroup) {
ViewGroup parent = (ViewGroup) v;
int count = parent.getChildCount();
for (int i = 0; i < count; i++) {
View child = parent.getChildAt(i);
setDialogText(child);
}
} else if (v instanceof TextView) {
((TextView) v).setTextSize(40);
}
}

(二)对代码进行简要分析一下:

1. 先讲一下怎么在程序中显示一个progressDialog,需要四步操作(其中第四步为对dialog进行处理,如更改字体字号等,不写也是看以显示系统默认dialog的)。

■声明一个dialogID:
private static final int DLG_SHOW = 0;

■ 创建progressDialog:
@Override
protected Dialog onCreateDialog(int id) {

if (id == DLG_SHOW) {
ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("loading");
dialog.setCancelable(true);
return dialog;
}
return super.onCreateDialog(id);
}

■显示progressDialog:
showDialog(DLG_SHOW);

■准备progressDialog:
protected void onPrepareDialog(int id, Dialog dialog) {
View v = dialog.getWindow().getDecorView();
setDialogText(v);
super.onPrepareDialog(id, dialog);
}
2. 以上是讲怎么在activity中显示一个progressDislog,比较简单。现在重点讲解一下怎么更改dialog字体,主要分为2步。
■ 先取到dialog整个view:
View v = dialog.getWindow().getDecorView();//取到dialog的整个view
setDialogText(v);//并对该view进行设置

■ 然后遍历v,找到所有textview,设置大小。我写了个方法:
private void setDialogText(View v) {

if (v instanceof ViewGroup) {
ViewGroup parent = (ViewGroup) v;
int count = parent.getChildCount();
for (int i = 0; i < count; i++) {
View child = parent.getChildAt(i);
setDialogText(child);
}
} else if (v instanceof TextView) {
((TextView) v).setTextSize(40); //是textview,设置字号
}
}


android中Dialog和PopupWindow的区别

1. Android的对话框有两种:PopupWindow和AlertDialog。 它们的不同点在于:AlertDialog的位置固定,而PopupWindow的位置可以随意AlertDialog是非阻塞线程的,AlertDialog弹出的时候,后台可是还可以做其他事情的哦。 而PopupWindow是阻塞线程的, 这就意味着在我们退出这个弹出框之前,程序会一直等待PopupWindow的位置按照有无偏移分,可以分为偏移和无偏移两种;按照参照物的不同,可以分为相对于某个控件(Anchor锚)和相对于父控件。具体如下showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移 LayoutInflater layoutInflater = LayoutInflater.from(this); View popupWindow = layoutInflater.inflate(R.layout.popup, null);


Android中Popupwindow和Dialog的区别

PopupWindow和Dialog可以实现同样的效果,默认情况下Dialog可以快速创建对应的dialog对话窗口,只需要简单的几句话:创建DialogAlertDialog mDialog = null; mDialog = new AlertDialog.Builder(this).create();; mDialog.setIcon(R.drawable.ic_launcher); mDialog.setTitle("系统提示"); mDialog.setMessage("你确定要退出吗?"); mDialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定",null); mDialog.setButton(DialogInterface.BUTTON_NEGATIVE,"取消", null); mDialog.show();PopupWindow创建:需要获取对应的ViewView popupWindow_view = getLayoutInflater().inflate(R.layout.activity_popupwindow_left, null, false); popupWindow = new PopupWindow(popupWindow_view, 200, LayoutParams.MATCH_PARENT, true);PopupWindow创建过程没有Dialog那么方便,Dialog创建对象后,设置对应的Title、Message、Button即可;PopupWindow可以创建的弹窗从当前视图的上下左右方向弹出,效果和Dialog居中显示有所区别


为什么android中在dialog中调用progressDialog不用如方法同时加载

private void initProgressDialog() {

progressDialog = new ProgressDialog(this);
progressDialog.setMessage("加载中....");
progressDialog.show();
mHandler.postDelayed(runnable, 200);
}


这个方法本身有问题,android系统有一个主线程叫UI主线程,任何在UI主线程上进行较长时间得数据的交互都会导致UI线程堵塞,即有图像卡顿的现象。
mHandler.postDelayed(runnable, 200);这句话就是指在200毫秒后进行runnable的run方法,而这个方法会在UI主线程上进行,progressDialog转圈还没来得及显示就被这方法给堵塞了,所以会出现你的说那种状况。
解决方法有几种,可以用异步机制,或者消息机制(就好像你这种)。
用消息机制的话 ,mHandler.postDelayed(runnable, 200);这句话就不能要,改为:
Thread t = new Thread(runnable);
t.start();
异步机制就自己上网搜搜吧。


如何正确地使用android中的progressdialog-Android

  其核心代码:Handler handler = new Handler(); Runnable mTasks = new Runnable() { public void run() { //执行url获取内容*作 } }; final ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true); handler.post(mTasks);  我实际使用后的效果是:点击按钮后(我是把这一系列*作放在一个clicklistener里)UI界面就阻塞在那里,然后等task执行完毕之后才显示progressdialog并且一直会存在(当然如果你在这个task结束后添加一条dialog.dismiss语句就会发现progressdialog显示后立即就消失了,但是这个不是本文的重点)我在stackoverflow上发现不少人有同样的问题,但是并没有找到正确的答案,只是有人给出了asynctask类的方案(我没有实际使用这个方案,但是根据我最后的理解,这种方案应该也是可行的)  这个问题困扰了我一个下午的时间,要解释这个问题,就要简单说一下android的UI线程,android程序启动时,会启动一个对应的主线程(就是UI线程),这个线程负责和用户的交互(例如按下按钮,滑动等),我们只能在UI线程中访问android UI 工具包。  但是对于一些很耗时的*作,如果我们在主线程里完成的话,主线程就不能响应用户的*作,这样就会产生类似windows程序失去响应的效果,所以大部分时候我们都会启动一个新的线程执行这些*作,但是要注意在新的线程里是不能修改UI界面的(只能在UI线程里修改UI界面)。  ​  比如说我们想下载一个url的html内容,然后显示在界面的一个Textview上,我们如果在新启动的线程里调用textview.settext()方法是不会生效的。  说了这么多,是为了说明handler的作用就是为了在其他线程里更新UI。比如我们如果用handler.post(run) (run的内容就是更新在textview)的话,就可以实现我们的目的。  回到正题,我们如果按照前述代*使用progressdialog的话,在执行完  final ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true);这条语句之后  handler.post(mTasks);这条语句虽然看起来是在mtask这个线程里执行,但是因为使用了handler类,所以效果实际还是等同于阻塞了UI线程。所以progressdialog就等到mtask执行完毕之后才显示了。因此我们正确的写法应该是这样的:final ProgressDialog myDialog = ProgressDialog.show(YourClass.this, "正在连接服务器..", "连接中,请稍后..", true, true); new Thread(){ public void run() { //执行url获取内容*作 handle.post( //在这里面更新textview); } }.start();  最后如果希望在新线程执行完之后让progressdialog自动消失的话,就在新线程里利用handler执行dialog.dismiss()。这个内容在本文开头的链接里也有详细的介绍,在这里就不赘述了。


如何修改安卓自定义水平progressdialog的样式

android修改HOLO对话框风格

andriod中修改对话框的风格,可以通过设置theme来实现,部分元素需要通过Java代码来修改,下面以修改对话框的标题为例说明各步骤。
1、编写一个文本样式。
DIALOG的标题是一个textview,在sytles.xml中,添加如下代码来设置你自己的文本样式:

22sp
@color/font_dark_grey

2、设置对话框的标题主题。

上面的标题文本并不能直接设置为对话框的标题样式。 我们还需要编写一个表示标题的主题的style,在这里指定标题的文本样式。代码如下:


1
true
@style/DialogWindowTitle


3、设置对话框主题。

接下来,我们编写我们的对话框主题,在这里指定标题的主题。由于一些属性并不是public的,所以我们需要继承自原来的某个style,代码如下:



@style/DialogWindowTitle.DeviceDefault


4、自定义App的主题。

接下来,我们需要在我们的App theme中指定我们的对话框使用这种主题,所以需要定义一个App theme。同样由于App theme的许多属性并不是public的(比如下面要提到的标题下面的那条蓝线),所以我们要继承自一个原生的style。这里我根据程序需要选择了Theme.Holo.Light.NoActionBar,代码如下:


@style/Theme.DeviceDefault.Dialog

5、指定App主题。

最后一步,我们需要在AndroidManifest.xml文件中,指定我们的app主题。这步很简单,只需要在application标签中指定android:theme的值即可,如下:

android:theme="@style/ParkingTheme"


Android的progressdialog转圈的颜色一直是绿色的,怎样修改成自己想要的颜色?

String.xml 文件,progressDialog是继承与Dialog,先设置一下progressDialog的风格,设置你想要的背景和颜色:


@null
true
@null
@android:style/Animation.Dialog
stateUnspecified|adjustPan



@android:color/transparent
true

2.customprogressdialog.xml文件,定义自己的布局,由于我的需求只需要一个进度条以及一串显示的内容,所以布局比较接单


上一篇:飞利浦240pw9

下一篇:达拉然许愿池