📜  如何在Android中创建循环确定的ProgressBar?

📅  最后修改于: 2021-05-13 18:23:38             🧑  作者: Mango

在本文中,我们将演示如何在Android Studio中创建一个圆形进度条,该进度条显示当前进度值,并且最初具有灰色背景色。进度的中心显示进度。下面给出了一个示例GIF,以了解我们将在本文中做些什么。注意,我们将使用Java语言实现该项目。

在Android示例GIF中创建循环确定的ProgressBar

分步实施

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,您必须选择Java作为编程语言。

步骤2:创建一个新的可绘制资源文件

在drawable文件夹中创建一个名为circle.xml的新Drawable Resource File 。要创建一个新的Drawable Resource File,请导航到res> drawable并按照图像进行操作

如下:

单击Drawable Resource File,将打开一个新对话框,如下图所示。添加文件名,然后选择“根元素”作为图层列表,然后单击“确定”

步骤3:使用circle.xml文件

导航到res> drawable> circle.xml,然后将下面给出的代码添加到该文件中。在此文件中,我们将绘制一个显示进度的圆圈。注释已添加到代码中,以更好地理解。

XML


    
    
        
        
            
        
    
    
    
        
        
            
            
                
  
            
        
    


XML

    
    
    
    
    
    
  


XML


  
    
    
  
    
      
    
    


Java
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;
  
public class MainActivity extends AppCompatActivity {
    private int progress = 0;
    Button buttonIncrement;
    Button buttonDecrement;
    ProgressBar progressBar;
    TextView textView;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        buttonDecrement = (Button) findViewById(R.id.button_decr);
        buttonIncrement = (Button) findViewById(R.id.button_incr);
        progressBar = (ProgressBar) findViewById(R.id.progress_bar);
        textView = (TextView) findViewById(R.id.text_view_progress);
  
        // when clicked on buttonIncrement progress in incresed by 10%
        buttonIncrement.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // if progress is less than or equal 
                // to 90% then only it can be increased
                if (progress <= 90) {
                    progress += 10;
                    updateProgressBar();
                }
            }
        });
  
        // when clicked on buttonIncrement progress in decreased by 10%
        buttonDecrement.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // If progress is greater than 
                // 10% then only it can be decreased
                if (progress >= 10) {
                    progress -= 10;
                    updateProgressBar();
                }
            }
        });
    }
      
    // updateProgressBar() method sets 
    // the progress of ProgressBar in text
    private void updateProgressBar() {
        progressBar.setProgress(progress);
        textView.setText(String.valueOf(progress));
    }
}


步骤4:将样式添加到ProgressBar

导航到res> layout> theme.xml并将下面给出的代码添加到该文件。我们在此文件中添加了新样式。注释已正确添加,以便清晰理解。

XML格式


    
    
    
    
    
    
  

步骤5:使用activity_main.xml文件

转到res> layout> activity_main.xml,然后将下面给出的代码添加到该文件中。在这里,我们添加了一个显示进度的ProgressBar ,并添加了一个TextView以显示进度的百分比。还添加了两个按钮来增加或减少进度。必需的注释已添加到代码中。

XML格式



  
    
    
  
    
      
    
    

步骤6:使用MainActivity。 Java文件

转到MainActivity。 Java文件,并将下面给出的代码添加到该文件中。 ProgressBar属性在此处实现。注释已添加到代码中,以便快速清晰地理解。

Java

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;
  
public class MainActivity extends AppCompatActivity {
    private int progress = 0;
    Button buttonIncrement;
    Button buttonDecrement;
    ProgressBar progressBar;
    TextView textView;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        buttonDecrement = (Button) findViewById(R.id.button_decr);
        buttonIncrement = (Button) findViewById(R.id.button_incr);
        progressBar = (ProgressBar) findViewById(R.id.progress_bar);
        textView = (TextView) findViewById(R.id.text_view_progress);
  
        // when clicked on buttonIncrement progress in incresed by 10%
        buttonIncrement.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // if progress is less than or equal 
                // to 90% then only it can be increased
                if (progress <= 90) {
                    progress += 10;
                    updateProgressBar();
                }
            }
        });
  
        // when clicked on buttonIncrement progress in decreased by 10%
        buttonDecrement.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // If progress is greater than 
                // 10% then only it can be decreased
                if (progress >= 10) {
                    progress -= 10;
                    updateProgressBar();
                }
            }
        });
    }
      
    // updateProgressBar() method sets 
    // the progress of ProgressBar in text
    private void updateProgressBar() {
        progressBar.setProgress(progress);
        textView.setText(String.valueOf(progress));
    }
}

输出: