我有一个应用程序,当用户按下按钮时,可以查看网页图像。那些其他屏幕在其他活动中。因为许多图像是很多kbs,并且需要一些时间来加载,我需要一些能够告知用户的东西,他已按下按钮并且必须等待。我尝试使用微调器,但我不能使它适用于我的xml,所以你能告诉我其他什么吗?许多Android应用程序只有一个黑色的屏幕,直到加载最终视图,或者例如使按钮更改backgrounf颜色,表明用户已按下它,必须等待。我必须在代码中的哪个位置放置它?
这是我的代码。
b4.setOnClickListener(new View.OnClickListener() {
public void onClick(View l) {
/*ParnassosTheme();*/
Intent i = new IntentScreen.this,OtherScreen.class);
Bundle b = new Bundle();
b.putString("id", id);
i.putExtras(b);
startActivity(i);
}
});
和我的其他屏幕活动
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...do things...
答案 0 :(得分:1)
当您执行加载任务时,在任务开始时显示进度对话框,并在完成工作时将其关闭。注意:它工作正常,但onCreateDialog()已被弃用info here。如果您定位SDK 11+,请考虑使用DialogFragment而不是read here。
public class OtherScreen extends Activity{
private static final int LOADING_DIALOG_KEY = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// initialization
// show loading dialog
showDialog(LOADING_DIALOG_KEY);
new LoadDataTask().execute();
}
@Override
protected Dialog onCreateDialog(int id){
ProgressDialog dialog = null;
if (id == LOADING_DIALOG_KEY){
dialog = new ProgressDialog(this);
dialog.setTitle("Dialog title");
dialog.setMessage("Data loading...");
dialog.setIndeterminate(true);
dialog.setCancelable(false);
}
return dialog;
}
private final class LoadDataTask extends
AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params)
{
// do work here
return null;
}
@Override
protected void onPostExecute(Void result)
{
dismissDialog(LOADING_DIALOG_KEY);
}
}
}