Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I use Android ProgressBar in determinate mode?

I am writing a media player and i would like to have a progress bar showing the progress of the song. I found the ProgressBar class, but all i can get on the screen is a circular spinning icon. what im looking for is an actual bar.

How do i change the style of the ProgressBar to be a bar (not a circle) and how would i use it with MediaPlayer?

thanks

like image 377
mtmurdock Avatar asked Jun 03 '10 15:06

mtmurdock


People also ask

What is progress bar view in Android?

Android ProgressBar is a graphical view indicator that shows some progress. Android progress bar displays a bar representing the completing of the task. Progress bar in android is useful since it gives the user an idea of time to finish its task.

How do I make my progress bar horizontal Android?

In Android, by default a progress bar will be displayed as a spinning wheel but If we want it to be displayed as a horizontal bar then we need to use style attribute as horizontal. It mainly use the “android. widget. ProgressBar” class.


2 Answers

use the style ?android:attr/progressBarStyleHorizontal

for example:

  <ProgressBar android:id="@+id/progressBar"         style="?android:attr/progressBarStyleHorizontal" 

and this is an example with MediaPlayer:

package com.playerpgbar;  import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView;  public class Player extends Activity implements Runnable, OnClickListener {      private TextView status;     private ProgressBar progressBar;     private Button startMedia;     private Button stop;     private MediaPlayer mp;            @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);          status = (TextView) findViewById(R.id.status);         progressBar = (ProgressBar) findViewById(R.id.progressBar);         startMedia = (Button) findViewById(R.id.startMedia);         stop = (Button) findViewById(R.id.stop);          startMedia.setOnClickListener(this);         stop.setOnClickListener(this);                     }              @Override     public void onClick(View v) {         if (v.equals(startMedia)) {             if (mp != null && mp.isPlaying()) return;             mp = MediaPlayer.create(Player.this, R.raw.exodus_piranha);             mp.start();                            status.setText(R.string.PlayingMedia);                      progressBar.setVisibility(ProgressBar.VISIBLE);             progressBar.setProgress(0);             progressBar.setMax(mp.getDuration());             new Thread(this).start();         }          if (v.equals(stop) && mp!=null) {             mp.stop();             mp = null;                         status.setText(R.string.Stopped);             progressBar.setVisibility(ProgressBar.GONE);         }     }      @Override     public void run() {         int currentPosition= 0;         int total = mp.getDuration();         while (mp!=null && currentPosition<total) {             try {                 Thread.sleep(1000);                 currentPosition= mp.getCurrentPosition();             } catch (InterruptedException e) {                 return;             } catch (Exception e) {                 return;             }                         progressBar.setProgress(CurrentPosition);         }     } } 
like image 54
Jorgesys Avatar answered Sep 18 '22 18:09

Jorgesys


Programmatically:

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleHorizontal); progressBar.setIndeterminate(false); 
like image 21
nmr Avatar answered Sep 19 '22 18:09

nmr