Android实现弹窗进度条效果

作者:WillenWu

这篇文章主要为大家详细介绍了Android实现弹窗进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Android自定义进度条主要是修改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内容如下:
<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"> <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"> <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的内容如下:
<?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="正在切换状态...." 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的内容如下:
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对象 private ProgressBar pro1; public MyProgressBar(Context context) { // TODO Auto-generated constructor stub this.context = context; dialog = new Dialog(context, R.style.dialog); dialog.setOnCancelListener(onCancelListener); * 初始化进度对话框 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); // 设置进度条是否自动旋转,即设置其不确定模式,false表示不自动旋转 pro1.setIndeterminate(false); // 设置ProgressBar的最大值 pro1.setMax(100); // 设置ProgressBar的当前值 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();

调用代码如下:
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的当前值 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实现弹窗进度条

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • Flutter利用SizeTransition实现组件飞入效果
    Flutter利用SizeTransition实现组件飞入效果
    2022-04-04
  • Android自定义ScrollView实现阻尼回弹
    Android自定义ScrollView实现阻尼回弹
    2022-04-04
  • android ScrollView实现水平滑动回弹
    android ScrollView实现水平滑动回弹
    2022-04-04
  • Android实现悬浮窗效果
    Android实现悬浮窗效果
    2022-04-04
  • Android Studio实现简易登录界面制作
    Android Studio实现简易登录界面制作
    2022-04-04
  • Android Studio实现下拉列表效果
    Android Studio实现下拉列表效果
    2022-04-04
  • Android Studio实现登录界面功能
    Android Studio实现登录界面功能
    2022-04-04
  • Android studio实现动态背景页面
    Android studio实现动态背景页面
    2022-04-04
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2023 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号