您好,登錄后才能下訂單哦!
說明
ProgressBar一般用于顯示一個過程,例如數據加載過程,文件下載進度,音樂播放進度等。
默認形式ProgressBar
默認方式下,ProgressBar顯示為圓形進度,循環轉圈,不顯示具體的進度值,控制其顯隱藏即可,如下
適用于界面加載
//xml中 <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" /> //代碼中控制顯隱藏 mProgressBar = (ProgressBar) findViewById(R.id.progress_bar_main); mProgressBar.setVisibility(View.VISIBLE);
橫向ProgressBar
橫向帶進度的進度條,通過設置ProgressBar的Style為
max屬性指定進度條總進度值,progress設置當前進度值,也可以說是初始進度值
//xml中 <ProgressBar android:id="@+id/progress_bar_h" android:layout_width="85dp" android:layout_height="10dp" android:layout_gravity="center" android:max="100" android:progress="50" />
設進度條背景
系統自帶的進度條的顏色比較單調,實際開發中使用較少,可以自定義進度條背景,新建一個progressbar_bg.xml文件
<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 設置背景色 --> <item android:id="@android:id/background" android:drawable="@mipmap/feed_grow_progress_bar"> </item> <!-- 設置進度條顏色 --> <item android:id="@android:id/progress"> <clip> <shape> <gradient android:endColor="#fff000" android:startColor="#fff000" /> </shape> </clip> </item> </layer-list>
gradient可以設置進度條的漸變色, android:endColor和 android:startColor可以設置漸變開始和結束的顏色。定義完成以后,便可以使用
<ProgressBar android:id="@+id/progress_bar_healthy" android:layout_width="85dp" android:layout_height="10dp" android:layout_marginTop="20dp" android:layout_gravity="center" android:max="100" android:progress="50" android:progressDrawable="@drawable/progressbar_bg" />
效果圖,這里設置了黃色矩形背景,及黃色進度條
動態設置
在音樂進度,網絡下載時,需動態加載進度條,默認情況下,設置進度條,使用setProgress()即可。但有時除了動態設置進度,仍需要動態設置進度條顏色
private void setElectircProgress(int i, int color) { ClipDrawable drawable = new ClipDrawable(new ColorDrawable(color), Gravity.LEFT, ClipDrawable.HORIZONTAL); progressBarElectric.setProgressDrawable(drawable); progressBarElectric.setProgress(i); }
音樂播放實例
通過MediaPlayer 播放音樂并獲取進度,設置進度
musicProgressBar = (ProgressBar) findViewById(R.id.progress_bar_music); if (mPlayer != null) { mPlayer.release(); mPlayer = null; } mPlayer = MediaPlayer.create(this, R.raw.summer); mPlayer.start(); musicProgressBar.setMax(mPlayer.getDuration()); if (timer != null) { timer = null; timerTask = null; } timer = new Timer(); timerTask = new TimerTask() { @Override public void run() { if (mPlayer != null) { if (mPlayer.isPlaying()) { runOnUiThread(new Runnable() { @Override public void run() { musicProgressBar.setProgress(mPlayer.getCurrentPosition()); } }); } } } }; timer.schedule(timerTask, 0, 1000);
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。