CircleProgress:圓形進(jìn)度條,可以實(shí)現(xiàn)仿 QQ 健康計(jì)步器的效果,支持配置進(jìn)度條背景色、寬度、起始角度,支持進(jìn)度條漸變
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)玉田免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
DialProgress:類似 CircleProgress,但是支持刻度
WaveProgress:實(shí)現(xiàn)了水波紋效果的圓形進(jìn)度條,不支持漸變和起始角度配置,如需此功能可參考 CircleProgress 自行實(shí)現(xiàn)。
先上效果圖,有圖才好說(shuō)。
首先解決問(wèn)題一的問(wèn)題: 你肯定使用了系統(tǒng)的 oncreateDialog 和 showdialog 方法了,所以 這個(gè)就會(huì)顯示一次 第二次不顯示了 , 你應(yīng)該調(diào)用 dialog方法里面的 show()方法 來(lái)顯示,這樣每次顯示那個(gè)progressbar都會(huì)在轉(zhuǎn)圈 問(wèn)題二: 你說(shuō)下面設(shè)置了一個(gè)白色背景,但是下面還是有個(gè)框,不過(guò)我有個(gè)疑問(wèn),如果你設(shè)置為白色背景,那么你的轉(zhuǎn)條默認(rèn)是白色的不就看不見(jiàn)了嗎?好了這個(gè)問(wèn)題不糾結(jié)了!那個(gè)黑色的是邊框?qū)е碌?,去掉邊框就行?一般我們采用的是自定義dialog,也就是寫一個(gè)類來(lái)繼承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ì)你夠好了吧! 要是選為精彩回答 那就謝謝你了!
繼承于View類,直接子類有AbsSeekBar和ContentLoadingProgressBar,其中AbsSeekBar的子類有SeekBar和RatingBar,可見(jiàn)這二者也是基于ProgressBar實(shí)現(xiàn)的。
1、ProgressBar有兩個(gè)進(jìn)度,一個(gè)是android:progress,另一個(gè)是android:secondaryProgress。后者主要是為緩存需要所涉及的,比如在看網(wǎng)絡(luò)視頻時(shí)候都會(huì)有一個(gè)緩存的進(jìn)度條以及還要一個(gè)播放的進(jìn)度,在這里緩存的進(jìn)度就可以是android:secondaryProgress,而播放進(jìn)度就是android:progress,有了secondProgress,可以很方便定制ProgressBar。
2、ProgressBar分為確定的和不確定的,確定的是我們能明確看到進(jìn)度,相反不確定的就是不清楚、不確定一個(gè)操作需要多長(zhǎng)時(shí)間來(lái)完成,這個(gè)時(shí)候就需要用的不確定的ProgressBar了。屬性android:indeterminate如果設(shè)置為true的話,那么ProgressBar就可能是圓形的滾動(dòng)條或者水平的滾動(dòng)條(由樣式?jīng)Q定),但是我們一般時(shí)候,是直接使用Style類型來(lái)區(qū)分圓形還是水平ProgressBar的。
3、ProgressBar的樣式設(shè)定其實(shí)有兩種方式,在API文檔中說(shuō)明的方式如下:
Widget.ProgressBar.Horizontal
Widget.ProgressBar.Small
Widget.ProgressBar.Large
Widget.ProgressBar.Inverse
Widget.ProgressBar.Small.Inverse
Widget.ProgressBar.Large.Inverse
使用的時(shí)候可以這樣:style="@android:style/Widget.ProgressBar.Small",另外還有一種方式就是使用系統(tǒng)的attr,下面的方式是系統(tǒng)的style:
style="?android:attr/progressBarStyle"
style="?android:attr/progressBarStyleHorizontal"
style="?android:attr/progressBarStyleInverse"
style="?android:attr/progressBarStyleLarge"
style="?android:attr/progressBarStyleLargeInverse"
style="?android:attr/progressBarStyleSmall"
style="?android:attr/progressBarStyleSmallInverse"
style="?android:attr/progressBarStyleSmallTitle"
[java] view plaincopy
ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
style="@android:style/Widget.ProgressBar.Horizontal"(等同于@android:attr)
android:layout_width="match_parent"
android:layout_height="wrap_content" /
話不多說(shuō) 先上圖
實(shí)現(xiàn)原理:
1、先畫出中心進(jìn)度問(wèn)題
2、圓形進(jìn)度灰色背景、圓形進(jìn)度值帶光暈
3、時(shí)鐘刻度
github:?
下面是安卓學(xué)習(xí)手冊(cè)中實(shí)現(xiàn)各種進(jìn)度條的截圖:
要想看各種進(jìn)度條的實(shí)現(xiàn)代碼和文檔,直接去360手機(jī)助手中下載安卓學(xué)習(xí)手冊(cè),例子文檔隨便看。
1、說(shuō)明
在某些操作的進(jìn)度中的可視指示器,為用戶呈現(xiàn)操作的進(jìn)度,還它有一個(gè)次要的進(jìn)度條,用來(lái)顯示中間進(jìn)度,如在流媒體播放的緩沖區(qū)的進(jìn)度。一個(gè)進(jìn)度條也可不確定其進(jìn)度。在不確定模式下,進(jìn)度條顯示循環(huán)動(dòng)畫。這種模式常用于應(yīng)用程序使用任務(wù)的長(zhǎng)度是未知的。
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?長(zhǎng)形進(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"/
這里我們?cè)O(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" /
這里通過(guò)android:indeterminate="true"設(shè)置了當(dāng)前為無(wú)模式進(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" /
通過(guò)android:backgroup設(shè)置了背景色
當(dāng)前名稱:android圓形進(jìn)度條,unity 圓形進(jìn)度條
標(biāo)題來(lái)源:http://aaarwkj.com/article4/dsisjie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、小程序開(kāi)發(fā)、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站排名、搜索引擎優(yōu)化、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)