2015-01-09 3 views
0

Привет, я новичок в потоковой передаче в целом, и я пытаюсь настроить индикатор выполнения, который увеличивается каждые полсекунды до 100, используя метод sleep. У меня возникли проблемы с использованием большого количества синтаксиса, который я нашел в сети, и когда я запускаю эту программу, он не отображает индикатор выполнения, а отображает значок вращающейся загрузки. Это то, что у меня есть:Создание индикатора выполнения для android

public class main extends ActionBarActivity { 
Handler mHandler; 


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

    final Button startButton = (Button) findViewById(R.id.startbutton); 

    startButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(1); 
      startPb(); 
     } 
    }); 
} 
private void startPb(){ 

    final ProgressBar pb = (ProgressBar) findViewById(R.id.progressBar); 
    pb.setIndeterminate(false); 
    pb.setProgress(0); 
    new Thread(new Runnable(){ 

     public void run(){ 
      for (int i = 0; i <= 100; i++) 
       try { 
        Thread.sleep(500); 
        pb.setProgress(i); 
        System.out.println(i); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      pb.post(new Runnable() { 
       public void run() { 
        pb.incrementProgressBy(1); 
       } 
      }); 

     } 
    }).start(); 
} 

У меня такое чувство, что я не правильно реализую индикатор выполнения в приведенном выше коде. Layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".Counter" 
android:id="@+id/counter" 
tools:ignore="InvalidId"> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="startButton" 
    android:id="@+id/startbutton" 
    android:layout_centerHorizontal="true" /> 

<ProgressBar 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/progressBar" 
    android:layout_below="@+id/startbutton" 
    android:layout_centerHorizontal="true" /> 

</RelativeLayout> 
+0

Так в чем проблема? – Sievajet

+0

В нем не отображается панель, она отображает вращающийся круг ... кроме того, крутящий круг отображается сам при запуске приложения; вроде как приложение загружается – kpce

+0

использовать 'progressBarStyleHorizontal' вместо' progressBarStyleLarge' – njzk2

ответ

1

Вращающегося прогресс бар неопределенного прогресса бар. Чтобы использовать фактический индикатор выполнения, вам необходимо будет позвонить:

pb.setIndeterminate(false); 

Простой стиль бара также был проблемой. Вот хорошая рекомендация, объясняющая типы стиля выполнения. What's the meaning of android:progressBarStyle attribute in ProgressBar?

+0

Хорошо, я сделал это ... Он все еще не отображает панель – kpce

+0

Не отображает индикатор выполнения вообще? Или еще показывая крутящийся круг? Кроме того, укажите файл макета. –

+0

Это все еще крутящийся круг. Файл макета теперь включен. Метод setInderterminate (true) также существует – kpce

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