Android實(shí)現(xiàn)彈窗進(jìn)度條效果
Android自定義進(jìn)度條主要是修改ProgressBar的style,彈窗則是在Dialog里顯示ProgressBar。
直接上代碼。
在style.xml里加入如下代碼:
<style name="ProgressBar_Mini" parent="@android:style/Widget.ProgressBar.Horizontal"> <item name="android:maxHeight">50dip</item> <item name="android:minHeight">8dip</item> <item name="android:indeterminateOnly">false</item> <item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item> <item name="android:progressDrawable">@drawable/progressbar_mini</item> </style>
<style name="dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowBackground">@color/transparent</item> </style>
新建drawable/progressbar_mini.xml內(nèi)容如下:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@android:id/background"> <shape> <corners android:radius="0dip" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="#F5F5F5" android:startColor="#BEBEBE" /> </shape> </item> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="0dip" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="#165CBC" android:startColor="#85B0E9" /> </shape> </clip> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="0dip" /> <gradient android:angle="270" android:centerY="0.75" android:endColor="#00FF66" android:startColor="#00FF66" /> </shape> </clip> </item> </layer-list>
myprogressbar.xml的內(nèi)容如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/back_qian" android:gravity="center" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="正在切換狀態(tài)...." android:textSize="18sp" android:textColor="@color/black" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:text="" /> <ProgressBar android:id="@+id/progressBar1" style="@style/ProgressBar_Mini" android:layout_width="290dp" android:layout_height="17dp" /> </LinearLayout>
MyProgressBar.java的內(nèi)容如下:
package com.wl.util; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.view.LayoutInflater; import android.view.View; import android.widget.ProgressBar; import com.wl.R; public class MyProgressBar { Dialog dialog; Context context; // 聲明ProgressBar對(duì)象 private ProgressBar pro1; /** * 構(gòu)造 */ public MyProgressBar(Context context) { // TODO Auto-generated constructor stub this.context = context; dialog = new Dialog(context, R.style.dialog); dialog.setOnCancelListener(onCancelListener); } /** * 初始化進(jìn)度對(duì)話框 */ public void initDialog() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.myprogressbar, null); dialog.setContentView(view); pro1 = (ProgressBar) dialog.findViewById(R.id.progressBar1); // 設(shè)置進(jìn)度條是否自動(dòng)旋轉(zhuǎn),即設(shè)置其不確定模式,false表示不自動(dòng)旋轉(zhuǎn) pro1.setIndeterminate(false); // 設(shè)置ProgressBar的最大值 pro1.setMax(100); // 設(shè)置ProgressBar的當(dāng)前值 pro1.setProgress(0); dialog.show(); } public void setProgress(int progressValue) { pro1.setProgress(progressValue); } public void colseDialog() { dialog.dismiss(); } public boolean isShowing() { if (dialog.isShowing()) { return true; } else { return false; } } OnCancelListener onCancelListener = new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub dialog.dismiss(); } }; }
調(diào)用代碼如下:
MyProgressBar myProgressBar; myProgressBar = new MyProgressBar(Dialog_TestActivity.this); myProgressBar.initDialog(); new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } for (int i = 0; i < 100; i++) { handler.sendEmptyMessage(0); try { Thread.sleep(30); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }).start(); Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // 改變ProgressBar的當(dāng)前值 myProgressBar.setProgress(intCounter++); if (intCounter == 100) { intCounter = 0; myProgressBar.colseDialog(); } } };
按返回退出:
@Override public void onBackPressed() { // TODO Auto-generated method stub Log.d("11", "onBackPressed()"); if (myProgressDialog.isShowing()) { myProgressDialog.colseDialog(); } if (myProgressBar.isShowing()) { myProgressBar.colseDialog(); } super.onBackPressed(); }
源碼:Android實(shí)現(xiàn)彈窗進(jìn)度條
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android屏幕鎖屏彈窗的正確姿勢(shì)DEMO詳解
- Android實(shí)現(xiàn)氣泡布局/彈窗效果 氣泡尖角方向及偏移量可控
- Android仿支付寶支付從底部彈窗效果
- Android監(jiān)聽輸入法彈窗和關(guān)閉的實(shí)現(xiàn)方法
- Android仿支付寶微信支付密碼界面彈窗封裝dialog
- Android如何實(shí)現(xiàn)鎖屏狀態(tài)下彈窗
- Android開發(fā)實(shí)現(xiàn)仿京東商品搜索選項(xiàng)卡彈窗功能
- Android實(shí)現(xiàn)隱私政策彈窗與鏈接功能
- Android自定義彈窗提醒控件使用詳解
- Android?Studio實(shí)現(xiàn)彈窗設(shè)置
相關(guān)文章
Android中實(shí)現(xiàn)OkHttp上傳文件到服務(wù)器并帶進(jìn)度
本篇文章主要介紹了Android中實(shí)現(xiàn)OkHttp上傳文件到服務(wù)器并帶進(jìn)度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Android實(shí)現(xiàn)獲取短信驗(yàn)證碼并自動(dòng)填寫功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)獲取短信驗(yàn)證碼并自動(dòng)填寫功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Android開發(fā)中使用Volley庫發(fā)送HTTP請(qǐng)求的實(shí)例教程
這篇文章主要介紹了Android開發(fā)中使用Volley庫發(fā)送HTTP請(qǐng)求的實(shí)例教程,包括創(chuàng)建Volley單例的基本知識(shí)與取消Request請(qǐng)求的技巧等,需要的朋友可以參考下2016-05-05Android編程實(shí)現(xiàn)自動(dòng)調(diào)整TextView字體大小以適應(yīng)文字長(zhǎng)度的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)自動(dòng)調(diào)整TextView字體大小以適應(yīng)文字長(zhǎng)度的方法,涉及Android基于TextView類的繼承及Paint屬性操作實(shí)現(xiàn)字體大小自適應(yīng)的相關(guān)技巧,需要的朋友可以參考下2016-01-01Android自定義PasswordInputView密碼輸入
這篇文章主要為大家詳細(xì)介紹了Android自定義PasswordInputView密碼輸入功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Android基礎(chǔ)知識(shí)之broadcast廣播詳解
這篇文章主要為大家詳細(xì)介紹了Android基礎(chǔ)知識(shí)之broadcast廣播的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-06-06Android淺析viewBinding和DataBinding
這篇文章主要介紹了Android淺析viewBinding和DataBinding,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09