Значок изображения для ожидания после нажатия кнопки - PullRequest
0 голосов
/ 14 января 2012

У меня есть приложение, которое, когда пользователь нажимает кнопку, может просматривать изображения в Интернете.Эти другие экраны в других видах деятельности.Поскольку многие изображения имеют много килобайт, и их загрузка занимает некоторое время, мне нужно что-то, что сообщит пользователю, что он нажал кнопку и должен ждать.Я пытался использовать спиннер, но я не мог заставить его работать для моего XML, так что вы можете предложить мне что-нибудь еще?Многие приложения для Android просто имеют черный экран, пока не загрузится окончательный вид, или, например, не заставляют кнопку менять цвет фона, указывая на то, что пользователь нажал его и должен подождать.И где в коде я должен разместить его?

Вот мой код.

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 Ответ

1 голос
/ 14 января 2012

Когда вы выполняете загрузку задачи, показывайте диалог прогресса в начале задачи и закрывайте его, когда работа завершена. Примечание: он работает нормально, но onCreateDialog () уже устарел информация здесь . Если вы ориентируетесь на SDK 11+, рассмотрите возможность использования DialogFragment вместо , прочитайте здесь .

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); 
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...