android - 如何设计像在android中修复的进度条这样的 View ?

标签 android progress-bar progressdialog

我必须这样设计我的 View

enter image description here

请帮助我如何在android中设计这个

提前致谢...

最佳答案

添加一个按钮:

打开“res/layout/main.xml”文件,添加普通按钮进行演示。

文件:res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnStartProgress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Download File" />

</LinearLayout>

2.代码

使用进度条的关键是使用“Thread”来运行你的时间消耗任务和另一个“Thread”来相应地更新进度条状态。阅读代码的注释,它应该是不言自明的。

文件:MyAndroidAppActivity.java

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class MyAndroidAppActivity extends Activity {

    Button btnStartProgress;
    ProgressDialog progressBar;
    private int progressBarStatus = 0;
    private Handler progressBarHandler = new Handler();

    private long fileSize = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        addListenerOnButton();

    }

    public void addListenerOnButton() {

        btnStartProgress = (Button) findViewById(R.id.btnStartProgress);
        btnStartProgress.setOnClickListener(
                 new OnClickListener() {

           @Override
           public void onClick(View v) {

            // prepare for a progress bar dialog
            progressBar = new ProgressDialog(v.getContext());
            progressBar.setCancelable(true);
            progressBar.setMessage("File downloading ...");
            progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressBar.setProgress(0);
            progressBar.setMax(100);
            progressBar.show();

            //reset progress bar status
            progressBarStatus = 0;

            //reset filesize
            fileSize = 0;

            new Thread(new Runnable() {
              public void run() {
                while (progressBarStatus < 100) {

                  // process some tasks
                  progressBarStatus = doSomeTasks();

                  // your computer is too fast, sleep 1 second
                  try {
                    Thread.sleep(1000);
                  } catch (InterruptedException e) {
                    e.printStackTrace();
                  }

                  // Update the progress bar
                  progressBarHandler.post(new Runnable() {
                    public void run() {
                      progressBar.setProgress(progressBarStatus);
                    }
                  });
                }

                // ok, file is downloaded,
                if (progressBarStatus >= 100) {

                    // sleep 2 seconds, so that you can see the 100%
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                    // close the progress bar dialog
                    progressBar.dismiss();
                }
              }
               }).start();

               }

                });

        }

    // file download simulator... a really simple
    public int doSomeTasks() {

        while (fileSize <= 1000000) {

            fileSize++;

            if (fileSize == 100000) {
                return 10;
            } else if (fileSize == 200000) {
                return 20;
            } else if (fileSize == 300000) {
                return 30;
            }
            // ...add your own

        }

        return 100;

    }

}

关于android - 如何设计像在android中修复的进度条这样的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24865186/

相关文章:

android - 如何仅在 EditText 的底部添加边框?

android - MockK 模拟 ViewModel 的 savedStateHandle.getLiveData()

android - 如何使用 MuPDF 在密码保护的 pdf 上保存注释

android - 在 Repository 类中观察 Forever 是一个好习惯吗? db+network 分页列表

java - 使用 ProgressDialog 下载文件,取消下载 (Android)

android - 进度对话框不会立即出现

WinAPI 进度条 : stop animation?

java - 使用 fxml (scenebuilder) 制作的进度条来使用方法中的值

javascript - 带进度条的 jquery slider

java - Android:AsyncTask 中的进度对话框错误