请你帮我写一个用Android studio编写的用外部类实现事件监听的代码,要求当点击这个按钮时,一个进度条的进度会以每秒一格的速度增长到100
时间: 2023-05-13 17:07:15 浏览: 68
当点击按钮时,进度条的进度会以每秒一格的速度增长到100的代码如下:
首先,在布局文件中添加一个按钮和一个进度条:
```
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start" />
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="0" />
```
然后,在外部类中实现事件监听:
```
public class MainActivity extends AppCompatActivity {
private Button btnStart;
private ProgressBar progressBar;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = findViewById(R.id.btn_start);
progressBar = findViewById(R.id.progress_bar);
handler = new Handler();
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
final int progress = i;
handler.post(new Runnable() {
@Override
public void run() {
progressBar.setProgress(progress);
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
});
}
}
```
在这个代码中,我们首先获取按钮和进度条的实例,然后创建一个 Handler 对象,用于在子线程中更新 UI。当点击按钮时,我们创建一个新的线程,在这个线程中循环更新进度条的进度,并在每次更新后休眠 1 秒钟,以达到每秒一格的速度增长的效果。注意,我们在更新进度条的进度时,使用了 Handler.post() 方法将更新 UI 的操作放到主线程中执行,以避免在子线程中更新 UI 导致的异常。