Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 加载时显示进度条_Android_Progress Bar - Fatal编程技术网

Android 加载时显示进度条

Android 加载时显示进度条,android,progress-bar,Android,Progress Bar,我在main.xml中有一个按钮,它将链接到另一个包含服务器信息的xml。在系统加载信息时,包含进度条以避免空白屏幕。我已经完成了下面的代码,但它仍然不是我想要的东西。下面的代码将等待1000毫秒,然后仅执行下一个代码。我如何修改它,使加载等待时间取决于互联网速度,如果互联网连接缓慢,则进度条屏幕将显示更长的时间 package com.android.myApps; import android.app.Activity; import android.content.Intent; imp

我在main.xml中有一个按钮,它将链接到另一个包含服务器信息的xml。在系统加载信息时,包含进度条以避免空白屏幕。我已经完成了下面的代码,但它仍然不是我想要的东西。下面的代码将等待1000毫秒,然后仅执行下一个代码。我如何修改它,使加载等待时间取决于互联网速度,如果互联网连接缓慢,则进度条屏幕将显示更长的时间

package com.android.myApps;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;

public class MainScr extends Activity {

    private final int WAIT_TIME = 1000;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {       
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.MainScr);       
    }   

    public void onClickCategory(View view)
    {
        findViewById(R.id.mainSpinner1).setVisibility(View.VISIBLE);
        new Handler().postDelayed(new Runnable(){
            @Override
                public void run() {                          
                      Intent mainIntent = new Intent(MainScr.this, Category.class); 
                      MainScr.this.startActivity(mainIntent); 
                      MainScr.this.finish(); 
                      } 
            }, WAIT_TIME);
    }
}

你试过Asyntask吗?您的操作过程将在UI中更新

public final class HttpTask
        extends
        AsyncTask<String/* Param */, Boolean /* Progress */, String /* Result */> {

    private HttpClient mHc = new DefaultHttpClient();

    @Override
    protected String doInBackground(String... params) {
        publishProgress(true);
        // Do the usual httpclient thing to get the result
        return result;
    }

    @Override
    protected void onProgressUpdate(Boolean... progress) {
        // line below coupled with 
        //    getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS) 
        //    before setContentView 
        // will show the wait animation on the top-right corner
        MyActivity.this.setProgressBarIndeterminateVisibility(progress[0]);
    }

    @Override
    protected void onPostExecute(String result) {
        publishProgress(false);
        // Do something with result in your activity
    }
}

您在这里所犯的错误是,您正在将特定时间转储到代码中 你永远不知道要得到多少回应。 你应该遵循以下方法

步骤1在屏幕上显示进度对话框

第二步让下载自己花时间。但它应该在新的线程中完成

步骤3下载完成后,它将发出消息,任务已完成,现在删除该消息 “进度”对话框,然后继续

我在这里粘贴示例代码。希望对您有所帮助

package com.android.myApps;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class MainScr extends Activity
{
    private Handler handler;
    private ProgressDialog progress;
    private Context context;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        context = AncActivity.this;
        progress = new ProgressDialog(this);
        progress.setTitle("Please Wait!!");
        progress.setMessage("Wait!!");
        progress.setCancelable(false);
        progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);

        handler = new Handler()
        {

            @Override
            public void handleMessage(Message msg)
            {
                progress.dismiss();
                Intent mainIntent = new Intent(context, Category.class);
                startActivity(mainIntent);
                super.handleMessage(msg);
            }

        };
        progress.show();
        new Thread()
        {
            public void run()
            {
                // Write Your Downloading logic here
                // at the end write this.
                handler.sendEmptyMessage(0);
            }

        }.start();

    }

}

我想我会帮你的:谢谢你的回答,一切都很好,但是加载图标没有旋转:请尝试在这里使用AsynTask。。它将在短时间内完成您的任务background@Vipul沙阿,我需要一个这样的解决方案,鉴于该类别已被弃用,请您更新此答案以供今天使用。我尝试用Logger替换类别,但没有成功。请帮忙。