**
横向带进度的进度条,通过设置ProgressBar的Style为
style="?android:attr/progressBarStyleHorizontal"
设进度条背景
自定义进度条背景,新建一个progressbar_horizaontal.xml文件
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<clip>
<shape android:shape="rectangle">
<solid android:color="#dedede" />
<corners android:radius="@dimen/dp_5" />
</shape>
</clip>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape android:shape="rectangle">
<solid android:color="@color/main_color" />
<corners android:radius="@dimen/dp_5" />
</shape>
</clip>
</item>
</layer-list>
使用方法
布局文件
<ProgressBar
android:id="@+id/mProgress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dp"
android:layout_height="10dp"
android:layout_gravity="center"
android:background="@drawable/progressbar_horizaontal_bg"
android:indeterminateOnly="false"
android:max="100"
android:progressDrawable="@drawable/progressbar_horizaontal" />
封装
public class DialogLoadingHorizontal implements LoadingView {
/**
* 弹窗载体
*/
private Context activity;
/**
* 加载框载体
*/
private Dialog dialog;
/**
* loading布局
*/
private View progressGroup;
private ProgressBar mProgress;
private TextView mTopText;
private TextView mBottomText;
private TextView mLeftText;
private TextView mRightText;
private boolean isloading = false;
/**
* 是否延迟展示loading框
*/
private boolean isShowDelayLoading = true;
private Handler handler;
public DialogLoadingHorizontal(Context activity) {
this.activity = activity;
dialog = new Dialog(activity);
initView();
initDialog();
}
private void initView() {
progressGroup = LayoutInflater.from(activity).inflate(R.layout.dialog_progress_horizontal_version_common, null);
mProgress = (ProgressBar) progressGroup.findViewById(R.id.mProgress);
mTopText = (TextView) progressGroup.findViewById(R.id.mTopText);
mBottomText = (TextView) progressGroup.findViewById(R.id.mBottomText);
mLeftText = (TextView) progressGroup.findViewById(R.id.mLeftText);
mRightText = (TextView) progressGroup.findViewById(R.id.mRightText);
}
private void initDialog() {
Window window = dialog.getWindow();
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
window.setBackgroundDrawableResource(android.R.color.transparent);
window.requestFeature(Window.FEATURE_NO_TITLE);
window.setContentView(progressGroup, params);
dialog.setCancelable(false);
}
@Override
public void showLoading() {
if (dialog != null && !dialog.isShowing()) {
isloading = true;
dialog.show();
}
}
@Override
public void showDelayLoading(long mill) {
isShowDelayLoading = true;
if (handler == null) {
handler = new Handler();
}
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (isShowDelayLoading && !isloading) {
showLoading();
}
}
}, mill);
}
@Override
public void dismissDelayLoading() {
isShowDelayLoading = false;
dismissLoading();
}
@Override
public boolean isLoadinig() {
return isloading;
}
@Override
public void dismissLoading() {
try {
if (dialog != null) {
isloading = false;
dialog.dismiss();
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void topText(String text) {
setText(mTopText, text);
}
@Override
public void bottomText(String text) {
setText(mBottomText, text);
}
@Override
public void leftText(String text) {
setText(mLeftText, text);
}
@Override
public void rightText(String text) {
setText(mRightText, text);
}
private void setText(TextView textView, String content) {
if (TextUtils.isEmpty(content)) {
textView.setVisibility(View.GONE);
} else {
textView.setText(content);
textView.setVisibility(View.VISIBLE);
}
}
@Override
public void isCancel(boolean cancel) {
dialog.setCancelable(cancel);
}
@Override
public void setProgress(int progress) {
mProgress.setProgress(progress);
}
}
调用
DialogLoadingHorizontal progressDialog = new DialogLoadingHorizontal(this);
//展开
progressDialog.showLoading();
//设置进度
progressDialog.setProgress((int) 50);
//关闭进度条
progressDialog.dismissLoading();