Android自定义弹窗进度条
来源:互联网 发布:新手淘宝开店教程视频 编辑:程序博客网 时间:2024/03/29 02:46
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"> <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的内容如下:
<?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 stubthis.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() {@Overridepublic void onCancel(DialogInterface dialog) {// TODO Auto-generated method stubdialog.dismiss();}};}
调用代码如下:
MyProgressBar myProgressBar;myProgressBar = new MyProgressBar(Dialog_TestActivity.this);myProgressBar.initDialog();new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubtry {Thread.sleep(200);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}for (int i = 0; i < 100; i++) {handler.sendEmptyMessage(0);try {Thread.sleep(30);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}).start();Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {// 改变ProgressBar的当前值myProgressBar.setProgress(intCounter++);if (intCounter == 100) {intCounter = 0;myProgressBar.colseDialog();}}};
按返回退出:
@Overridepublic void onBackPressed() {// TODO Auto-generated method stubLog.d("11", "onBackPressed()");if (myProgressDialog.isShowing()) {myProgressDialog.colseDialog();}if (myProgressBar.isShowing()) {myProgressBar.colseDialog();}super.onBackPressed();}
源码:http://download.csdn.net/detail/viviwen123/5162504
效果:
- Android自定义弹窗进度条
- Android自定义进度条
- Android自定义进度条
- Android自定义进度条
- Android自定义进度条
- android 自定义进度条颜色
- Android自定义进度条颜色
- Android 自定义进度条
- android 自定义进度条
- android 自定义圆形进度条
- android自定义进度条
- Android自定义进度条
- Android自定义进度条颜色
- Android 自定义进度条
- android 自定义进度条
- Android之自定义进度条
- Android自定义进度条
- Android自定义进度条
- 关于 C++ 和 C 的混编
- 菜鸟的springMVC的入门
- C# Socket编程(5)使用TCP Socket
- 在Linux下用netstat查看网络状态、端口状态
- MSP430端口与中断,键盘程序的模板
- Android自定义弹窗进度条
- 极大似然估计
- 指针和引用的联系与区别
- [Linux/Ubuntu] vi/vim 使用方法讲解
- [leetcode] permutations的讨论
- Adding Google Analytics to your Zen Cart store
- 中科院大牛博士是如何进行文献检索和阅读
- Windows脚本 - Bat批处理命令使用教程
- Eclipse快捷键