Android开发弹框横向进度条,Android实现弹窗进度条效果

Android自定义进度条主要是修改ProgressBar的style,弹窗则是在Dialog里显示ProgressBar。

直接上代码。

在style.xml里加入如下代码:

50dip

8dip

false

@android:drawable/progress_indeterminate_horizontal

@drawable/progressbar_mini

@null

true

true

true

true

@color/transparent

新建drawable/progressbar_mini.xml内容如下:

android:angle="270"

android:centerY="0.75"

android:endColor="#F5F5F5"

android:startColor="#BEBEBE" />

android:angle="270"

android:centerY="0.75"

android:endColor="#165CBC"

android:startColor="#85B0E9" />

android:angle="270"

android:centerY="0.75"

android:endColor="#00FF66"

android:startColor="#00FF66" />

myprogressbar.xml的内容如下:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/back_qian"

android:gravity="center"

android:orientation="vertical" >

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="center"

android:text="正在切换状态...."

android:textSize="18sp"

android:textColor="@color/black" />

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="center"

android:text="" />

android:id="@+id/progressBar1"

style="@style/ProgressBar_Mini"

android:layout_width="290dp"

android:layout_height="17dp" />

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();

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值