android - 如何显示进度条

标签 android onclicklistener android-progressbar

我正在尝试开发一个壁纸应用程序。有两个用于更改图像的按钮(下一个和后一个)。一切都很顺利。
现在我想在单击“下一步”更改图像时显示一段时间的进度条(图像变化不到一秒)。请给我一个关于如何去做的提示,我完全不知道。
这是我的主要 Activity 。

public class Main extends Activity { 
    private ImageView hImageViewPic;
    private Button iButton, gButton;
    private int currentImage = 0;
    int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4, 
        R.drawable.r5, R.drawable.r6, R.drawable.r7, R.drawable.r8, R.drawable.r9, R.drawable.r10 }; 

    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        hImageViewPic = (ImageView)findViewById(R.id.idImageViewPic); 
        iButton = (Button) findViewById(R.id.bnext);
        gButton = (Button) findViewById(R.id.bprev);
        //Just set one Click listener for the image 
        IButton.setOnClickListener(iButtonChangeImageListener); 
        gButton.setOnClickListener(gButtonChangeImageListener);
    } 

    View.OnClickListener iButtonChangeImageListener = new OnClickListener() {
        public void onClick(View v) {
            //Increase Counter to move to next Image 
            currentImage++; 
            currentImage = currentImage % images.length; 
            hImageViewPic.setImageResource(images[currentImage]);
    }
    };
    View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
        public void onClick(View v) {
        //Increase Counter to move to next Image 
        currentImage--;
        currentImage = currentImage % images.length; 
        hImageViewPic.setImageResource(images[currentImage]); 
    }
    }; 
}

最佳答案

按如下方式更改您的代码:

public class Main extends Activity {
    private ImageView hImageViewPic;
    private Button iButton, gButton;
    private int currentImage = 0;
    private Handler handler = null;
    private ProgressDialog progressDialog = null;
    int[] images = { R.drawable.r1, R.drawable.r2, R.drawable.r3, R.drawable.r4, 
            R.drawable.r5, R.drawable.r6, R.drawable.r7, R.drawable.r8, R.drawable.r9, R.drawable.r10 }; 


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

        handler = new Handler();
        hImageViewPic = (ImageView)findViewById(R.id.idImageViewPic); 
        hImageViewPic.setImageResource(images[currentImage]);
        iButton = (Button) findViewById(R.id.bnext);
        gButton = (Button) findViewById(R.id.bprev);
        //Just set one Click listener for the image 
        iButton.setOnClickListener(iButtonChangeImageListener); 
        gButton.setOnClickListener(gButtonChangeImageListener);
    }

    private void changeImage(View v){
        progressDialog = new ProgressDialog(MainActivity.this); 
        progressDialog.setMessage("Please Wait...");
        progressDialog.show();
        new Thread(new Runnable() {
            public void run() {
                long starttime = SystemClock.currentThreadTimeMillis();
                long stopwatch = 0;
                //Use Handler to change your Image here
                handler.post(new Runnable() {
                        @Override
                        public void run() {
                            if (currentImage < 0)
                                currentImage = images.length - 1;
                            currentImage = currentImage % images.length; 
                            hImageViewPic.setImageResource(images[currentImage]);
                        }
                    });
                    do{
                    stopwatch =(SystemClock.currentThreadTimeMillis()-starttime);
                    if(stopwatch > 500)
                        break;
                }while(true);
                //The loop will always execute for 5000 milliseconds
                progressDialog.dismiss();
            }
        }).start();
    }
    View.OnClickListener iButtonChangeImageListener = new OnClickListener() {
        public void onClick(View v) {
            //Increase Counter to move to next Image
            currentImage++;
            changeImage(v);
        }
    };
    View.OnClickListener gButtonChangeImageListener = new OnClickListener() { 
        public void onClick(View v) {
        //Decrease Counter to move to next Image
        currentImage--;
        changeImage(v);
    }
    }; 
}

关于android - 如何显示进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20661736/

相关文章:

android - 嵌套的 XML 布局文件

java - Android Room 通用 DAO

java - 类/监听器之间的通信

java - 使用 Robolectric 模拟对项目的点击

Android 绘制 Canvas 贝塞尔曲线和进度

android - 在 Android 中实现 fragment 化时出错

android - 如何检查游标是否为空?

java - OnClick() 不起作用

android - WebView 在加载进度条时显示为白色

android - 如何在对话框上添加进度条