android 带进度的按钮
时间: 2023-09-21 14:08:20 浏览: 41
你可以使用 Android 的 ProgressBar 和 Button 组件来创建带进度的按钮。以下是一个简单的实现示例:
1. 在布局文件中添加一个 Button 和一个 ProgressBar:
```
<Button
android:id="@+id/progress_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Download"
android:onClick="startDownload" />
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible"
android:indeterminate="false"
android:max="100" />
```
2. 在代码中实现 startDownload() 方法:
```
public void startDownload(View view) {
Button button = (Button) view;
ProgressBar progressBar = findViewById(R.id.progress_bar);
// 更改按钮和进度条的可见性
button.setVisibility(View.INVISIBLE);
progressBar.setVisibility(View.VISIBLE);
// 模拟下载任务
new Thread(new Runnable() {
@Override
public void run() {
for (int progress = 0; progress <= 100; progress += 10) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
progressBar.setProgress(progress);
}
// 下载完成后恢复按钮可见性
runOnUiThread(new Runnable() {
@Override
public void run() {
button.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.INVISIBLE);
}
});
}
}).start();
}
```
这个示例中,我们将按钮的可见性设置为不可见,将进度条的可见性设置为可见,并在一个新的线程中模拟下载任务。在循环中,我们使用 Thread.sleep() 方法暂停一秒钟,模拟下载的延迟,并将进度条的进度设置为当前进度。下载完成后,我们使用 runOnUiThread() 方法在 UI 线程中更新按钮和进度条的可见性,使按钮重新可见。