2010-11-09 2 views
2

Возможно ли, если да, как я могу перейти от прогресса 100 к 1, если пользователь ничего не делает.Разработка Android: счетчик поиска вниз!

Как для каждого .05sec seekbar.setProgress (- = 1) Так что без пользователь делает ничего SeekBar не войдет, пока он достигнет 1.

Пожалуйста Anser, как это сделать

Thank- вы

ответ

1
class Async extends AsyncTask<Void, Integer, Void>{ 

    ProgressDialog dialog; 

    public Async(Context ctx) { 
     dialog = new ProgressDialog(ctx); 
     dialog.show(); 
    } 

    @Override 
    protected void onProgressUpdate(Integer... values) { 
     // TODO Auto-generated method stub 

     dialog.incrementProgressBy(1); 

    super.onProgressUpdate(values); 
} 

@Override 
protected void onPostExecute(Void result) { 
    // TODO Auto-generated method stub 
    dialog.dismiss(); 
    super.onPostExecute(result); 
} 


@Override 
protected Void doInBackground(Void... params) { 
    // TODO Auto-generated method stub 
    int i=0; 
    while (i < 1000) { 

     publishProgress(1); 
     i++; 
    } 
    return null; 
} 
} 
+0

Спасибо, что разместили это. Ради обучения: что, если я не использовал ProgressDialog, но вместо этого имеет ProgressBar в представлении в действии? –

+0

Умм, это не имеет никакого смысла. Вместо использования asynctask вы просто вызываете свою активность. У вас может быть панель прогресса в представлении, а затем установить диалог для отображения этого представления. – Falmarri

+0

Чтобы уточнить, я имею в виду, если бы он был настроен таким образом: http://gamedev.stackexchange.com/questions/3380/how-do-i-load-chunks-of-data-from-an-assest-manager-during -a-load-screen У меня есть экран загрузки с индикатором выполнения. Я выкладываю вещи в стек для загрузки растровых изображений, звуков и т. Д. В память. Должен ли я рассмотреть возможность переключения на AsyncTask, как вы сказали, или оставить его как есть с ручными потоками? (Думаю, я действительно должен задать вопрос об этом) –

0

Что-то примерно так (примечание: не может скомпилировать):

private int progressStatus = 100; 

new Thread(new Runnable() 
     { 
      public void run() 
      { 
       while (progressStatus > 1) 
       { 
        progressStatus = doSomeWork(); 

        //---Update the progress bar--- 
        handler.post(new Runnable() 
        { 
         public void run() { 
          progressBar.setProgress(progressStatus); 
         } 
        }); 
       } 

       handler.post(new Runnable() 
       { 
        public void run() { 
         // Do your thing here when it's done 
        } 
       }); 
      }  

      private int doSomeWork() 
      { 
       try 
       { 
        //---simulate doing some work--- 
        Thread.sleep(50); 

       } catch (InterruptedException e) 
       { 
        e.printStackTrace(); 
       } 

       int progress = progressStatus - 1; 

       return progress; 
      } 

     }).start(); 
+0

Есть ошибки я не могу понять, каким образом. где вы получили код. у вас есть ссылка? – carefacerz

+0

@carefacerz Я вытащил его из одного из моих приложений, которое делало экран загрузки от 0 до 100. Я просто изменил счетчик. См. Мой пример в gamedev: http://gamedev.stackexchange.com/q/3380/47 –

+0

Учебник, который я вытащил, находится здесь, в разделе Progress View http://mobiforge.com/designing/story/understanding-user-interface -android-part-2-views –

0

вы можете быть вынуждены написать свой собственный прогресс бар , Вот пример: http://techdroid.kbeanie.com/2010/04/custom-progressbar-for-android.html

Там больше, чем один способ сделать это ...

+0

Я думаю, что у bryan-denny есть что-то в пути. Если вы можете помочь этому коду, пожалуйста. – carefacerz

Смежные вопросы