Android Studio实现,进度条的实现,自增线程,android作业。

题目:
【ProgressBar进度条】
按视频讲解的流程,实现两种进度条功能,并通过手动和自动两种方式控制进度条。
额外增加一个TextView,内容设为“学号+姓名”,布局自拟。
要求:
1)提交关键代码及解释。
2)提交展示运行结果的操作视频。

实现效果。
Android Studio实现,进度条的实现,自增线程,android作业。

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+"%");



    }
}

上一篇:android ProgressBar(进度条)


下一篇:ProgressBar