android實(shí)現(xiàn)簡(jiǎn)單進(jìn)度條ProgressBar效果
本文實(shí)例為大家分享了android實(shí)現(xiàn)簡(jiǎn)單進(jìn)度條ProgressBar的具體代碼,供大家參考,具體內(nèi)容如下
記錄一下今天學(xué)習(xí)的進(jìn)度條ProgressBar

1、在布局文件中添加ProgressBar
<ProgressBar ? ? ? ? android:id="@+id/progressbar" ? ? ? ? android:layout_width="match_parent" ? ? ? ? android:layout_height="wrap_content" ? ? ? ? style="@android:style/Widget.ProgressBar.Horizontal" ? ? ? ? android:max="100" ? ? ? ? android:layout_marginTop="150dp" ? ? ? ? />
其中**style=“@android:style/Widget.ProgressBar.Horizontal”**設(shè)置進(jìn)度條樣式為水平進(jìn)度條,否則默認(rèn)原型旋轉(zhuǎn)的進(jìn)度條;
max設(shè)置進(jìn)度條長(zhǎng)度,這里設(shè)置為100。
2、java代碼:
聲明ProgressBar;int型的mprogress表示進(jìn)度條進(jìn)度;Handler對(duì)象處理子線程消息
通過(guò)id獲取布局中的ProgressBar;
progressBar=findViewById(R.id.progressbar);
用Handler模擬子線程耗時(shí)操作
mhandler=new Handler(){
? ? ? ? ? ? @Override
? ? ? ? ? ? public void handleMessage(@NonNull Message msg) {
? ? ? ? ? ? ? ? super.handleMessage(msg);
? ? ? ? ? ? ? ? if(msg.what==0x111){
? ? ? ? ? ? ? ? ? ? progressBar.setProgress(mprogress);//進(jìn)度條未完成時(shí),更新進(jìn)度條
? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? Toast.makeText(ProgressActivity.this,"耗時(shí)操作完成",Toast.LENGTH_LONG).show();
? ? ? ? ? ? ? ? ? ? progressBar.setVisibility(View.GONE);//設(shè)置進(jìn)度條消失
? ? ? ? ? ?}
? ? ? ?}
? };1、Handlerd需要重寫handleMessage()方法,參數(shù)為子線程傳來(lái)的msg.
2、msg.what==0x111表示消息是0x111,則進(jìn)度條未完成,此時(shí)需要通過(guò) progressBar.setProgress(mprogress)來(lái)更新進(jìn)度條。
3、msg是其他時(shí)則表示進(jìn)度條完成,這里只彈出Toast,也可以進(jìn)行其他操作。
開啟子線程更新UI
new Thread(new Runnable() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? while (true){
? ? ? ? ? ? ? ? ? ? //進(jìn)度更新
? ? ? ? ? ? ? ? ? ? mprogress=doWork();
? ? ? ? ? ? ? ? ? ? Message message=new Message();
? ? ? ? ? ? ? ? ? ? if(mprogress<100){
? ? ? ? ? ? ? ? ? ? ? ? message.what=0x111;//進(jìn)度條未完成時(shí)的message設(shè)置為0x111
? ? ? ? ? ? ? ? ? ? ? ? mhandler.sendMessage(message);//向handler發(fā)送消息
? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? message.what=0x110;//進(jìn)度條完成時(shí)的message設(shè)置為0x110
? ? ? ? ? ? ? ? ? ? ? ? mhandler.sendMessage(message);//向handler發(fā)送消息
? ? ? ? ? ? ? ? ? ? ? ? break;//進(jìn)度完成跳出循環(huán)
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? private int doWork(){
? ? ? ? ? ? ? ? mprogress= (int) (mprogress+Math.random()*10);
? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? Thread.sleep(200);//線程休息200ms
? ? ? ? ? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return mprogress;
? ? ? ? ? ? }
? ? ? ? }).start();1、在子線程中通過(guò)doWork()方法模擬耗時(shí)操作
2、doWork()方法改變mprogress的值即可,用來(lái)模擬進(jìn)度條進(jìn)度的值
3、需要一個(gè)Message對(duì)象將消息返回給主線程,
4、當(dāng)mprogress<100即進(jìn)度條未完成時(shí),設(shè)置message.what=0x111->對(duì)應(yīng)當(dāng)進(jìn)度條未完成時(shí),給主線程發(fā)送的message是0x111。
當(dāng)mprogress>100即進(jìn)度條完成時(shí),設(shè)置message.what=0x110->對(duì)應(yīng)當(dāng)進(jìn)度條完成時(shí),給主線程發(fā)送的message是0x110。這里message.what的值可以隨意設(shè)置,不一定非要0x111,0x110。
5、 設(shè)置完message之后需要向主線程發(fā)送message,即mhandler.sendMessage(message);
以上運(yùn)行即可實(shí)現(xiàn)一個(gè)簡(jiǎn)單進(jìn)度條。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android入門之彈出式對(duì)話框的實(shí)現(xiàn)
- Android入門之利用Spinner實(shí)現(xiàn)彈出選擇對(duì)話框
- Android對(duì)話框使用方法詳解
- Android自定義對(duì)話框的簡(jiǎn)單實(shí)現(xiàn)
- 五分了解Android?Progress?Bar進(jìn)度條加載
- Android開發(fā)基礎(chǔ)使用ProgressBar加載進(jìn)度條示例
- Android自定義View實(shí)現(xiàn)進(jìn)度條動(dòng)畫
- Android實(shí)現(xiàn)簡(jiǎn)單實(shí)用的垂直進(jìn)度條
- Jetpack Compose實(shí)現(xiàn)對(duì)話框和進(jìn)度條實(shí)例解析
相關(guān)文章
Android移動(dòng)端touch實(shí)現(xiàn)下拉刷新功能
這篇文章主要介紹了移動(dòng)端touch實(shí)現(xiàn)下拉刷新功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02
Android實(shí)現(xiàn)QQ新用戶注冊(cè)界面遇到問題及解決方法
這篇文章主要介紹了Android實(shí)現(xiàn)QQ新用戶注冊(cè)界面遇到問題及解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Android實(shí)現(xiàn)可瀏覽和搜索的聯(lián)系人列表
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可瀏覽和搜索的聯(lián)系人列表的相關(guān)代碼,瀏覽所有聯(lián)系人和根據(jù)名稱搜索聯(lián)系人,感興趣的小伙伴們可以參考一下2016-07-07
Android實(shí)現(xiàn)仿網(wǎng)易新聞主界面設(shè)計(jì)
這篇文章主要為大家介紹了Android實(shí)現(xiàn)仿網(wǎng)易新聞主界面設(shè)計(jì)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01
Android那兩個(gè)你碰不到但是很重要的類之ViewRootImpl
這兩個(gè)類就是ActivityThread和ViewRootImpl,之所以說(shuō)碰不到是因?yàn)槲覀儫o(wú)法通過(guò)正常的方式引用這兩個(gè)類或者其類的對(duì)象,本文就嘗試從幾個(gè)我們經(jīng)常接觸的方面先談?wù)刅iewRootImpl,感興趣的可以參考閱讀下2023-05-05
Android詳解之NoHttp最基本使用(無(wú)封裝)
這篇文章主要介紹了Android詳解之NoHttp最基本使用,無(wú)封裝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Android網(wǎng)絡(luò)監(jiān)聽和網(wǎng)絡(luò)判斷示例介紹
大家好,本篇文章主要講的是Android網(wǎng)絡(luò)監(jiān)聽和網(wǎng)絡(luò)判斷示例介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
Android學(xué)習(xí)教程之動(dòng)態(tài)GridView控件使用(6)
這篇文章主要為大家詳細(xì)介紹了Android動(dòng)態(tài)GridView控件的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11

