android - 如何以编程方式为每次旋转更改进度对话框 RING 颜色? (支持应该是最新的API)

标签 android progress-bar progressdialog

编辑:仍然没有解决方案!至少用进度条发布代码,这也得到了 NullPointer

如何以编程方式更改每次旋转的进度对话框颜色?

代码:

if (checkValidation()) {
                    progressDialog.setTitle(setStringResource(R.string.reg_user));
                    progressDialog.setMessage(setStringResource(R.string.wait));
                    progressDialog.setCancelable(false);
                    progressDialog.show();
                    registerUser(getName, getEmail, getPassword);
                }

另外,还有一个问题。如果我想使用这样的 progressDialog.setMessage(setStringResource(R.string.creating_user)); 更改相同进度对话框的标题怎么办? 但是对于特定时间段?

比如我想在 30 秒后更改同一进度对话框的标题。

最佳答案

首先这不是推荐的解决方案,但您可以像下面这样实现

每秒运行一个计时器并使用以下方法更新它。

ProgressBar progressbar=(ProgressBar) progressDialog.findViewById(android.R.id.progress);
progressbar.getIndeterminateDrawable().setColorFilter(Color.parseColor("#C60000"), android.graphics.PorterDuff.Mode.SRC_IN);

编辑

下面写的代码是kotlin语言

    pDialog = ProgressDialog.show(mContext, "Title goes here", "Message goes here")
    pDialog?.show()

    val progressbar = pDialog!!.findViewById(android.R.id.progress) as ProgressBar
    progressbar.indeterminateDrawable.setColorFilter(Color.parseColor("#C60000"), android.graphics.PorterDuff.Mode.SRC_IN)

查看输出

enter image description here

在 Java 中

ProgressDialog progressDialog = ProgressDialog.show(this, "Title goes here", "Message goes here");
progressDialog.show();

ProgressBar progressbar = (ProgressBar) progressDialog.findViewById(android.R.id.progress);
runTimer(progressbar);

progressDialog 初始化后调用下面的方法。另外,不要忘记在全局变量中引用进度条。

void runTimer(final ProgressBar progressbar){

        final Handler handler = new Handler();
        final int delay = 1000; //milliseconds

        handler.postDelayed(new Runnable(){
            public void run(){
                count++;
                switch (count%3){
                    case 0:
                        progressbar.getIndeterminateDrawable().setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);
                        break;
                    case 1:
                        progressbar.getIndeterminateDrawable().setColorFilter(Color.GREEN, android.graphics.PorterDuff.Mode.SRC_IN);
                        break;
                    case 2:
                        progressbar.getIndeterminateDrawable().setColorFilter(Color.BLUE, android.graphics.PorterDuff.Mode.SRC_IN);
                        break;
                }



                handler.postDelayed(this, delay);
            }
        }, delay);
    }

您需要全局声明count变量。

int count = 0;

关于android - 如何以编程方式为每次旋转更改进度对话框 RING 颜色? (支持应该是最新的API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54864969/

相关文章:

android - 运行时 DrawerLayout 必须使用 MeasureSpec.EXACTLY 异常进行测量

java - 使用 Retrofit with Field 传递参数

progress-bar - 任务完成时 JavaFX 隐藏进度条

wpf - 您如何避免不确定的进度条卡住?

android - 如何在等待来自服务器的 httpResponse 时使用 ProgressBar 显示微调器

java - 在 SQLiteOpenHelper onCreate 方法中显示 ProgressDialog

android - SharedPreferences getFloat 返回 ClassCastException 并强制关闭

java - 向服务器发送多个请求时,Okhttp 刷新过期 token

java - 如何在 Java 中使用进度条(Netbeans GUI)

android - 在 Android 中的 UI 线程操作期间显示 ProgressDialog