顯示百分比需要自己計(jì)算加載的內(nèi)容,以下以webView示例,webView加載網(wǎng)頁的時(shí)候可以增加進(jìn)度條:
成都創(chuàng)新互聯(lián)公司從2013年開始,先為南充等服務(wù)建站,南充等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為南充企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
1.從webView中獲取設(shè)置
WebSettings sws = webView.getSettings();
sws.setSupportZoom(true);
sws.setBuiltInZoomControls(true);
webView.setInitialScale(25);
webView.getSettings().setUseWideViewPort(true);
2.注冊setWebChromeClient事件
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activity和Webview根據(jù)加載程度決定進(jìn)度條的進(jìn)度大小
// 當(dāng)加載到100%的時(shí)候 進(jìn)度條自動(dòng)消失
//WebViewProgressActivity.this.setTitle("Loading...");
//WebViewProgressActivity.this.setProgress(progress * 100);
if (progress == 100) {
progressBar.setVisibility(View.GONE);
//WebViewProgressActivity.this.setTitle("完成");
}
}
});
3.注意在onProgressChanged中處理進(jìn)度,progress就是進(jìn)度值。
通過MediaPlayer調(diào)節(jié)。
系統(tǒng)自帶的進(jìn)度條的顏色比較單調(diào),實(shí)際開發(fā)中使用較少,可以自定義進(jìn)度條背景,新建一個(gè)progressbarbg.xml文件。gradient可以設(shè)置進(jìn)度條的漸變色,android:endColor和android:startColor可以設(shè)置漸變開始和結(jié)束的顏色。定義完成以后,便可以使用。
在音樂進(jìn)度,網(wǎng)絡(luò)下載時(shí),需動(dòng)態(tài)加載進(jìn)度條,默認(rèn)情況下,設(shè)置進(jìn)度條,使用setProgress即可。但有時(shí)除了動(dòng)態(tài)設(shè)置進(jìn)度,仍需要?jiǎng)討B(tài)設(shè)置進(jìn)度條顏色通過MediaPlayer播放音樂并獲取進(jìn)度,設(shè)置進(jìn)度。
這個(gè)進(jìn)度條,實(shí)際上是不顯示進(jìn)度的,只是兩幅圖片輪流顯示。在卸載完成后,停止顯示。嚴(yán)格說來,這不是進(jìn)度條,只是等待動(dòng)畫
。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bluetoothmeter);
mhandler = new Handler();
//通過mSearcheHandler更新UI
mSearchHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==0){
//改變環(huán)形進(jìn)度條的進(jìn)度
mCircleProcessBar.setProgress(mcnt);
mcnt+=1;
if(MCNT_MAX=mcnt){
mCircleProcessBar.setVisibility(View.GONE);
}
}
}
};
mBlueService = BluetoothLeService.getInstance();
initView();
initEvent();
}
private void initEvent()
{
mImgBtnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
//搜索
mbtnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Prepare list view and initiate scanning
if (m_devicelistadapter != null) {
m_devicelistadapter.clear();
m_devicelistadapter.notifyDataSetChanged();
}
startScan();
//設(shè)置圓環(huán)進(jìn)度條的出現(xiàn)時(shí)間(秒)
new TimerDelay(mSearchHandler).setDelayTime(CIRCLE_APPARE_TIME,mCircleProcessBar);
mcnt=1;
}
});
}
下面是安卓學(xué)習(xí)手冊中實(shí)現(xiàn)各種進(jìn)度條的截圖:
要想看各種進(jìn)度條的實(shí)現(xiàn)代碼和文檔,直接去360手機(jī)助手中下載安卓學(xué)習(xí)手冊,例子文檔隨便看。
1、說明
在某些操作的進(jìn)度中的可視指示器,為用戶呈現(xiàn)操作的進(jìn)度,還它有一個(gè)次要的進(jìn)度條,用來顯示中間進(jìn)度,如在流媒體播放的緩沖區(qū)的進(jìn)度。一個(gè)進(jìn)度條也可不確定其進(jìn)度。在不確定模式下,進(jìn)度條顯示循環(huán)動(dòng)畫。這種模式常用于應(yīng)用程序使用任務(wù)的長度是未知的。
2、XML重要屬性
android:progressBarStyle:默認(rèn)進(jìn)度條樣式
android:progressBarStyleHorizontal:水平樣式
3 重要方法
getMax():返回這個(gè)進(jìn)度條的范圍的上限
getProgress():返回進(jìn)度
getSecondaryProgress():返回次要進(jìn)度
incrementProgressBy(int diff):指定增加的進(jìn)度
isIndeterminate():指示進(jìn)度條是否在不確定模式下
setIndeterminate(boolean indeterminate):設(shè)置不確定模式下
setVisibility(int v):設(shè)置該進(jìn)度條是否可視
4 重要事件
onSizeChanged(int w, int h, int oldw, int oldh):當(dāng)進(jìn)度值改變時(shí)引發(fā)此事件
5進(jìn)度條的樣式
Widget.ProgressBar.Horizontal?長形進(jìn)度
Androidxml ?布局:
ProgressBar
android:id="@+id/progress_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Horizontal "
/
源碼:
private ProgressBar mProgress;
private int mProgressStatus=0;
private Handler mHandler=newHandler();
@Override
protected void onCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mProgress=(ProgressBar)findViewById(R.id.progress_bar);
new Thread(new Runnable(){
@Override
public void run(){
while(mProgressStatus100){
mProgressStatus=doWork();
mHandler.post(new Runnable(){
@Override
public void run(){
mProgress.setProgress(mProgressStatus);
}
});
}
}
}).start();
}
效果圖:
? ? ? ? ? ? ? ? ? ?
帶第二進(jìn)度的進(jìn)度條
xml配置如下:
ProgressBar
android:id="@+id/progress_bar_with_second"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:progress="40"
android:secondaryProgress="70"
android:paddingTop="20dp"
android:paddingBottom="20dp"/
這里我們設(shè)置了初始的進(jìn)度為40,android:progress的值在mini和max之間即mini=progressvalue=max
設(shè)置了第二進(jìn)度條的進(jìn)度值為70,該值也在mini和max之間。
效果如下:
不確定模式進(jìn)度條
xml配置文件:
ProgressBar
android:id="@+id/progress_bar_indeterminate"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateBehavior="cycle"
android:paddingBottom="20dp"
android:paddingTop="20dp"
android:progress="40" /
這里通過android:indeterminate="true"設(shè)置了當(dāng)前為無模式進(jìn)度條
效果如圖:
普通圓形進(jìn)度:Widget.ProgressBar.Inverse
ProgressBar
android:id="@+id/progress_bar1"
style="@android:style/Widget.ProgressBar.Inverse"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:progress="50"
android:background="#ff00ff"
android:paddingTop="4dp" /
通過android:backgroup設(shè)置了背景色
android自帶的播放器的進(jìn)度條是默認(rèn)會(huì)自動(dòng)隱藏的,不能設(shè)置的。除非你去改源代碼。你可以下個(gè)其他的播放器,看看能不能設(shè)置為不自動(dòng)隱藏。
MediaController mc = new MediaController(this);
mc.setVisibility(View.INVISIBLE);
videoView.setMediaController(mc);
我是實(shí)現(xiàn)了,可以把VideoView自帶的進(jìn)度條隱藏。
用MediaController應(yīng)該可以實(shí)現(xiàn)
如果用的VideoView的話,用如下代碼:
MediaController mc = new MediaController(this);
mc.setVisibility(View.VISIBLE);
vvView.setMediaController(mc);
擴(kuò)展資料:
以文件處理為例
單個(gè)文件的進(jìn)度處理方法:
使用CopyFileEx進(jìn)行文件復(fù)制,這個(gè)函數(shù)專門提供了一個(gè)回調(diào)函數(shù)用來處理你的進(jìn)度條,詳細(xì)參見MSDN。
總體進(jìn)度的處理方法:
如果一批文件,首先獲得文件的數(shù)量count = 文件數(shù)量
設(shè)置進(jìn)條的范圍為0至count,每完成一個(gè)文件,就向前進(jìn)一步。
參考資料來源:百度百科-進(jìn)度條