自定义ProgressBar,使window背景颜色不变暗

本文介绍了如何在Android中自定义进度对话框样式,并通过代码实现了背景透明、无标题栏和关闭按钮的功能。

首先我们自定义style

<style name="CustomProgressDialog" parent="@style/CustomDialog">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>

android:windowBackground这个属性就是用来设置window的背景,这里用系统自带的透明就行了

自定义控件代码

package com.cattsoft.deliersystem.view;


import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.ProgressBar;
import android.widget.TextView;


import com.cattsoft.deliersystem.R;


public class ProgressDialog extends Dialog {
private Context context = null;
private static ProgressDialog customProgressDialog = null;
public ProgressDialog(Context context) {
super(context);
this.context = context;
}


public ProgressDialog(Context context, int theme) {
super(context, theme);
}


public static ProgressDialog createDialog(Context context) {
customProgressDialog = new ProgressDialog(context,
R.style.CustomProgressDialog);
//设置自定义的视图
customProgressDialog.setContentView(R.layout.dialog_view);
//设置ProgressBar在window上显示的位置
customProgressDialog.getWindow().getAttributes().gravity = Gravity.BOTTOM;
LayoutParams params = customProgressDialog.getWindow().getAttributes();
params.y = 370;
customProgressDialog.getWindow().setAttributes(params);
customProgressDialog.show();
return customProgressDialog;
}


public void onWindowFocusChanged(boolean hasFocus) {


if (customProgressDialog == null) {
return;
}
}


/**

* setTitile 标题

* @param strTitle
* @return

*/
public ProgressDialog setTitile(String strTitle) {
return customProgressDialog;
}


/**
* 设置ProgressBar是否显示

* @param bool
*/
public void setProgressBar(boolean bool) {
ProgressBar progressBar = (ProgressBar) customProgressDialog
.findViewById(R.id.progress);
if (bool) {
progressBar.setVisibility(View.VISIBLE);
} else {
progressBar.setVisibility(View.GONE);
}
}


/**

* [setMessage 提示内容

* @param strMessage
* @return

*/
public ProgressDialog setMessage(String strMessage) {
TextView tvMsg = (TextView) customProgressDialog
.findViewById(R.id.id_tv_loadingmsg);


if (tvMsg != null) {
tvMsg.setText(strMessage);
}


return customProgressDialog;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值