kullanım tarzı örneğin ?android:attr/progressBarStyleHorizontal
:
<ProgressBar android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
ve bu MediaPlayer ile bir örnektir: Programlı
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);
}
}
}
Bu işe yarıyor, sadece bir satır eksik: while döngüsünü başlatmadan önce max konumunu (setMax (toplam)) ayarlamanız veya çubuğun% 100'e düz gitmesi gerekir. – mtmurdock
Merhaba, başlangıçta% 100 bar göremiyorum, progressBar.setMax (mp.getDuration()); ve sonra progressBar, yeni Thread (this) .start(); =) – Jorgesys
Hayır, bu Android için geçerli bir iş parçacığı modeli DEĞİLDİR. Kendi iş parçanızı oluşturmayın ve ardından UI'yi bu iş parçacığı içinden değiştirmeyin. Android kurallarına uymalısınız, ya da bulmak zor bir hata yaratırsınız ... Bunun yerine ... http://developer.android.com/resources/articles/painless-threading.html –