按下按钮后等待的图像图标

时间:2012-01-14 16:30:34

标签: android onclick

我有一个应用程序,当用户按下按钮时,可以查看网页图像。那些其他屏幕在其他活动中。因为许多图像是很多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...

1 个答案:

答案 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); 
        }
    }
}