创建自定义进度条

时间:2014-07-28 18:15:58

标签: android progress-bar

有人可以解释一下如何实现一个自定义进度条,它可以像这样使用一些ImageButton:

enter image description here

我自己正在搜索和实现它,但事件并非接近图片中的内容:(

我发现的唯一类似内容是thisthis

1 个答案:

答案 0 :(得分:1)

This example code应该给你想要的东西。如果有帮助,请告诉我。

enter image description here

编辑: 我编辑了链接,只指向了应该更容易的特定项目。

从我提供的链接下载项目作为zip,然后解压缩。在romannurik-code-e77853751bbd文件夹中导航到misc / pinprogress,然后你将进入这个项目。从src文件夹中将PinProgressButton.java添加到您的项目以及res目录中除ic_launcher.png之外的所有项目。

将其添加到您的布局

<com.yourpackage.pinprogress.PinProgressButton
                android:id="@+id/pin_progress_1"
                style="@style/PinProgressButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|right" />

从您的活动中引用它

 final PinProgressButton pinProgress1 = (PinProgressButton) findViewById(
            R.id.pin_progress_1);

设置进度

pinProgress1.setProgress(progressValue);

这是为了更改content description

    CompoundButton.OnCheckedChangeListener checkedChangeListener
            = new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
            updatePinProgressContentDescription((PinProgressButton) compoundButton);
        }
    };

    pinProgress1.setOnCheckedChangeListener(checkedChangeListener);

    updatePinProgressContentDescription(pinProgress1);
}

private void updatePinProgressContentDescription(PinProgressButton button) {
    int progress = button.getProgress();
    if (progress <= 0) {
        button.setContentDescription(getString(button.isChecked()
                ? R.string.content_desc_pinned_not_downloaded
                : R.string.content_desc_unpinned_not_downloaded));
    } else if (progress >= 100) {
        button.setContentDescription(getString(button.isChecked()
                ? R.string.content_desc_pinned_downloaded
                : R.string.content_desc_unpinned_downloaded));
    } else {
        button.setContentDescription(getString(button.isChecked()
                ? R.string.content_desc_pinned_downloading
                : R.string.content_desc_unpinned_downloading));
    }
}