题目:
【ProgressBar进度条】
按视频讲解的流程,实现两种进度条功能,并通过手动和自动两种方式控制进度条。
额外增加一个TextView,内容设为“学号+姓名”,布局自拟。
要求:
1)提交关键代码及解释。
2)提交展示运行结果的操作视频。
实现效果。
package com.example.chapter_3_progressbar;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.Guideline;
/**
* @author ssl
* @Date 2021/4/23
*/
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView mTextView;
private ProgressBar mProgressBar;
private ProgressBar mProgressBar2;
private Guideline mGuideline3;
private Button mButton;
private Button mButton2;
private int iProgress=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mTextView = (TextView) findViewById(R.id.textView);
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mProgressBar2 = (ProgressBar) findViewById(R.id.progressBar2);
mGuideline3 = (Guideline) findViewById(R.id.guideline3);
mButton = (Button) findViewById(R.id.button);
mButton2 = (Button) findViewById(R.id.button2);
mButton.setOnClickListener(this);
mButton2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
handleIncrease();
break;
case R.id.button2:
autoIncrease();
break;
}
}
/**
* 自动增加,每隔200毫秒,进度增加10%。
* 使用线程,并使用匿名内部类,创建Runable接口。
* 在Runable接口中,实现了run()方法。
* 在run()方法中,实现了while()循环。
* 在while()循环中,iProgress自增加10,如果iProgress大于100,则退出线程。
* 并使用runOnUiThread方法,将更改的iProgress显示在进度条和文本框中。
* 并使用静态引用Thread.sleep()方法,暂停线程200毫秒。
*/
private void autoIncrease() {
Thread mThread = new Thread(new Runnable()
{
@Override
public void run() {
while (iProgress<=100){
iProgress+=10;
if(iProgress>100) {
iProgress=0;
return;
}
runOnUiThread(new Runnable() {
@Override
public void run() {
mProgressBar.setProgress(iProgress);
mTextView.setText("进度:"+iProgress+"%");
}
});
try{
Thread.sleep(200);
}
catch (InterruptedException e){
e.printStackTrace();
}
}
}
}
);
mThread.start();
}
/**
* 手动增加,点击一次增加10%。如果到100%,则重新设置进程为0。
*/
private void handleIncrease() {
iProgress+=10;
if(iProgress>=100) iProgress=0;
mProgressBar.setProgress(iProgress);
mTextView.setText("进度:"+iProgress+"%");
}
}