Android 进度条 ProgressBar (模拟图片加载过程)

⭐.使用进度条模拟图片加载过程,加载完成则显示图片。

效果如下:
Android 进度条 ProgressBar (模拟图片加载过程)_第1张图片
所需控件(修改主布局文件):
     依次放置
    显示进度值的文本框,
    一个水平进度条组件,
    一个按钮,
    一个图片显示控件。

将按钮单击方法改为myclick;将图片显示和水平进度条设为隐藏,android:visibility = “gone”。
  
  

修改主Activity文件:
    除了定义XML布局文件中的组件外,还定义了一个处理消息的Handler类对象。
    在定义Handler类对象中,写了handleMessage0方法,通过消息Message带来的值更新进度以及提示信息。
    更新完成,提示下载完成并显示图片imageView.setVisibility(View.VISIBLE);


package com.example.dn.zxyapplication_03;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;


import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import android.view.View;
import android.os.Message;
import android.os.Handler;

public class MainActivity extends AppCompatActivity{

    private ImageView imageView;
    private ProgressBar progressBar;
    private TextView pbtext;
    private Handler myHandler;
    private int pvalue;



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

        pbtext=(TextView)findViewById(R.id.pbText);
        Button button=(Button) findViewById(R.id.button);
        progressBar=(ProgressBar) findViewById(R.id.pb);
        imageView=(ImageView) findViewById(R.id.image);

        //在自定义Handler类中,重写handleMessage()方法
        //通过Message的值更新进度和提示信息
        myHandler=new Handler(){
            @Override
            public void handleMessage(Message msg){
                progressBar.setProgress(msg.arg1);                                //将进度条进度更新到msg.arg1的值
                pbtext.setText("正在下载中...("   +msg.arg1+  "%)"  );           //更新提示信息
                if(msg.what==0x222){
                    //msg==100,弹出提示信息“下载完成”
                    Toast.makeText(MainActivity.this,"下载完成", Toast.LENGTH_SHORT).show();
                    //msg==100,将图片设置为显示
                    imageView.setVisibility(View.VISIBLE);
                }
            }
        };



    }




    public void myClick(View view){
        imageView.setVisibility(View.GONE);                 //set初识状态和初始值
        progressBar.setVisibility(View.VISIBLE);
        progressBar.setProgress(0);

        new Thread(new Runnable() {
            @Override
            public void run() {
                pvalue=0;
                while(true){
                    pvalue+=(int)(Math.random()*10);
                    try{
                        Thread.sleep(100);
                    }catch (Exception e){
                        e.printStackTrace();
                    }

                    Message mes=new Message();
                    if(pvalue<100){
                        mes.arg1=pvalue;
                        mes.what=0x111;
                        myHandler.sendMessage(mes);
                    }else{
                        mes.arg1=100;
                        mes.what=0x222;
                        myHandler.sendMessage(mes);
                        break;
                    }
                }

            }
        }).start();

    }


}

你可能感兴趣的:(Android)