Android横向ProgressBar

**

横向带进度的进度条,通过设置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();

鸣谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值