Android系統(tǒng)提供了兩大類進(jìn)度條樣式,長(zhǎng)形進(jìn)度條(progressBarStyleHorizontal) 和圓形進(jìn)度條(progressBarStyleLarge)。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供陽(yáng)春網(wǎng)站建設(shè)、陽(yáng)春做網(wǎng)站、陽(yáng)春網(wǎng)站設(shè)計(jì)、陽(yáng)春網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、陽(yáng)春企業(yè)網(wǎng)站模板建站服務(wù),十載陽(yáng)春做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
android 進(jìn)度條樣式更改:
第一種
(默認(rèn)樣式(中等圓形))
第二種
(長(zhǎng)方形進(jìn)度條)
進(jìn)度條用處很多,比如,應(yīng)用程序裝載資源和網(wǎng)絡(luò)連接時(shí),可以提示用戶稍等,這一類進(jìn)度條只是代表應(yīng)用程序中某一部分的執(zhí)行情況,而整個(gè)應(yīng)用程序執(zhí)行情況呢,則可以通過應(yīng)用程序標(biāo)題欄來顯示一個(gè)進(jìn)度條,這就需要先對(duì)窗口的顯示風(fēng)格進(jìn)行設(shè)置"requestWindowFeature(Window.FEATURE_PROGRESS)"。
安卓在對(duì)話框中,嵌入進(jìn)入條,其實(shí)是直接在對(duì)話框顯示xml文件,嵌入一個(gè)progress的對(duì)話框,如下代碼:
package com.yarin.android.TestOnPDialog;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class PDialog extends Activity
{
private Button mButton01,mButton02;
int m_count = 0;
//聲明進(jìn)度條對(duì)話框
ProgressDialog m_pDialog;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//得到按鈕對(duì)象
mButton01 = (Button)findViewById(R.id.Button01);
mButton02 = (Button)findViewById(R.id.Button02);
//設(shè)置mButton01的事件監(jiān)聽
mButton01.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
//創(chuàng)建ProgressDialog對(duì)象
m_pDialog = new ProgressDialog(PDialog.this);
// 設(shè)置進(jìn)度條風(fēng)格,風(fēng)格為圓形,旋轉(zhuǎn)的
m_pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// 設(shè)置ProgressDialog 標(biāo)題
m_pDialog.setTitle("提示");
// 設(shè)置ProgressDialog 提示信息
m_pDialog.setMessage("這是一個(gè)圓形進(jìn)度條對(duì)話框");
// 設(shè)置ProgressDialog 標(biāo)題圖標(biāo)
m_pDialog.setIcon(R.drawable.img1);
// 設(shè)置ProgressDialog 的進(jìn)度條是否不明確
m_pDialog.setIndeterminate(false);
// 設(shè)置ProgressDialog 是否可以按退回按鍵取消
m_pDialog.setCancelable(true);
// 設(shè)置ProgressDialog 的一個(gè)Button
m_pDialog.setButton("確定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i)
{
//點(diǎn)擊“確定按鈕”取消對(duì)話框
dialog.cancel();
}
});
// 讓ProgressDialog顯示
m_pDialog.show();
}
});
//設(shè)置mButton02的事件監(jiān)聽
mButton02.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
m_count = 0;
// 創(chuàng)建ProgressDialog對(duì)象
m_pDialog = new ProgressDialog(PDialog.this);
// 設(shè)置進(jìn)度條風(fēng)格,風(fēng)格為長(zhǎng)形
m_pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// 設(shè)置ProgressDialog 標(biāo)題
m_pDialog.setTitle("提示");
// 設(shè)置ProgressDialog 提示信息
m_pDialog.setMessage("這是一個(gè)長(zhǎng)形對(duì)話框進(jìn)度條");
// 設(shè)置ProgressDialog 標(biāo)題圖標(biāo)
m_pDialog.setIcon(R.drawable.img2);
// 設(shè)置ProgressDialog 進(jìn)度條進(jìn)度
m_pDialog.setProgress(100);
// 設(shè)置ProgressDialog 的進(jìn)度條是否不明確
m_pDialog.setIndeterminate(false);
// 設(shè)置ProgressDialog 是否可以按退回按鍵取消
m_pDialog.setCancelable(true);
// 讓ProgressDialog顯示
m_pDialog.show();
new Thread()
{
public void run()
{
try
{
while (m_count = 100)
{
// 由線程來控制進(jìn)度。
m_pDialog.setProgress(m_count++);
Thread.sleep(100);
}
m_pDialog.cancel();
}
catch (InterruptedException e)
{
m_pDialog.cancel();
}
}
}.start();
}
});
}
}
首先解決問題一的問題: 你肯定使用了系統(tǒng)的 oncreateDialog 和 showdialog 方法了,所以 這個(gè)就會(huì)顯示一次 第二次不顯示了 , 你應(yīng)該調(diào)用 dialog方法里面的 show()方法 來顯示,這樣每次顯示那個(gè)progressbar都會(huì)在轉(zhuǎn)圈 問題二: 你說下面設(shè)置了一個(gè)白色背景,但是下面還是有個(gè)框,不過我有個(gè)疑問,如果你設(shè)置為白色背景,那么你的轉(zhuǎn)條默認(rèn)是白色的不就看不見了嗎?好了這個(gè)問題不糾結(jié)了!那個(gè)黑色的是邊框?qū)е碌?,去掉邊框就行?一般我們采用的是自定義dialog,也就是寫一個(gè)類來繼承dialog,這個(gè)時(shí)候的構(gòu)造函數(shù)是這個(gè): public MyDialog(Context context, int theme) { super(context, theme); this.context = context; init(); } 這個(gè)theme是什么東西呢? 就是一個(gè)style樣式 如下: resources????style?name="dialog"?parent="@android:style/Theme.Dialog"????????item?name="android:windowFrame"@null/item!--邊框--????????item?name="android:windowIsFloating"true/item!--是否浮現(xiàn)在activity之上--?????? item?name="android:windowIsTranslucent"false/item!--半透明--????????item?name="android:windowNoTitle"true/item!--無(wú)標(biāo)題--????????item?name="android:windowBackground"@color/transparent/item!--背景透明--????????item?name="android:backgroundDimEnabled"false/item!--模糊--????/style/resources? 其他代碼: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Dialog dialog = new MyDialog(this, R.style.MyDialog); android.view.WindowManager.LayoutParams pa3 = new android.view.WindowManager.LayoutParams(); pa3.height = android.view.WindowManager.LayoutParams.WRAP_CONTENT; pa3.width = android.view.WindowManager.LayoutParams.WRAP_CONTENT; pa3.x = 0;//x 起點(diǎn) pa3.y = 0;//y起點(diǎn) Window window = dialog.getWindow(); window.setAttributes(pa3); dialog.show(); return super.onKeyDown(keyCode, event); } 之所以android.view.WindowManager.LayoutParams我要這么寫,因?yàn)長(zhǎng)ayoutParams太多了,我害怕你找半天,兄弟對(duì)你夠好了吧! 要是選為精彩回答 那就謝謝你了!
話不多說 先上圖
實(shí)現(xiàn)原理:
1、先畫出中心進(jìn)度問題
2、圓形進(jìn)度灰色背景、圓形進(jìn)度值帶光暈
3、時(shí)鐘刻度
github:?