java android ,onclick按钮内的延迟包括gui更改

标签 java android

我正在尝试模拟发送消息的进度。 主要思想是为发送给他们的消息的成员着色,提升状态栏等。(gui 更改)所有这些在每次循环迭代时都有延迟。

主要问题是一切都在 onClick 监听器内部进行,并且在其中运行线程不会有帮助):因为 gui 仅在延迟完成后才发生更改。

有人可以建议我如何进行这种模拟吗?

send.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                        for(int i=0; i<phoneNumbers.size(); i++){

                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException e) {
                            }


                            members.get(i).setBackgroundColor(Color.GREEN);
                            members.get(i).invalidate();
                            mProgressDialog.setProgress(i+1);
                            sentCount.setText(getString(R.string.msgSentCount) + (i+1));

                            if(i==12){
                            scroolView.animate().translationYBy(-50);}

                        }
            }
        });

非常感谢您!

最佳答案

如果我没理解错的话——假进度+等待时间。首先,处理程序非常适合延迟输出:

    //Fake Progress
    progress = new ProgressDialog(this);
    open(this);


    // Delay output
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            setData();
        }
    }, 6000);

在函数 setData() 中,执行您想要执行的任务 和假的进度条:

    public void open(Activity activity) {
       progress.setMessage("Fakeprogress,  Data Mining...");
       progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
       progress.setIndeterminate(false);
       progress.setCancelable(false);
       progress.setMax(100);
       progress.setProgress(10);
       progress.show();
       final int totalProgressTime = 100;

       final Thread t = new Thread() {

        @Override
        public void run() {

            int jumpTime = 0;
            while (jumpTime < totalProgressTime) {
                try {
                    sleep(60);
                    //System.out.println("********" + jumpTime);
                    jumpTime += 1;
                    progress.setProgress(0);
                    progress.setProgress(jumpTime);

                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
            progress.dismiss();

        }
    };
    t.start();
}

关于java android ,onclick按钮内的延迟包括gui更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26682426/

相关文章:

java - 使用 Java 代码进行 ETL

java - 如何用Java为 Crystal 报表创建自定义参数提示对话框?

Java原子操作

java - 设置循环播放音频文件后逐个播放

android - Jenkins Android 构建失败 - 无法构建 libwebviewchromium.so

带语音识别器的 Android 自定义键盘

java - 从当前进程获取hWnd

windows - 在 Windows 上为 IntelliJ Idea 指定 JRE

android - 如何将 PendingIntent 保存到 SQLite 数据库?

Android WebView - 抖动/点击更改