android 实现进度条的画面加载

android进度条的实现:

进度条英文名 : Progress_Bar

流程 :
创建progressbar进度条,将进度条拖进界面
在这里插入图片描述
切换到MainActivity.java文件
在这里插入图片描述
绑定控件


控件类型 接收变量 = findViewById(R.id.(控件的id));

bar = (ProgressBar) findViewById(R.id.progressBar1); //寻找进度条的控件
text = (TextView) findViewById(R.id.textView1); //寻找字窗的控件

开启子线程, 在最后面需要添加.start()方法进行启动线程

new Thread(new Runnable(){
	@Override
		public void run() {
			// TODO Auto-generated method stub
}).start();

由于线程执行的太快 我们应该给线程里面加一个睡眠的方法让它缓慢执行

//让程序每100毫秒执行一次 由于这句话很容易出现异常 
//所以我们需要使用try来捕获异常防止程序崩塌
try{
	Thread.sleep(100);
}catch{
	e.printStackTrace();
}
 

在线程中设置progressbar的值

bar.setprogressbar(100); //设置进度条的值为100;

由于对耗时操作进行开启子线程 不能在子线程执行耗时操作 子线程不能对UI操作所以要让ui在线程之上执行操作需要实现一个runOnUIThread()方法即可

new runOnUIThread(new Runnable(){
	@Override
	public void run() {
	// TODO Auto-generated method stub
});

进度条每更新一次 TextView里面的文字都要做出相对应的变化,所以得先在外面定义一个值然后让里面的线程进行持续执行:

int num = 0;
while(true){
	num++ //相当于num = num+1
	try{
		Thread.sleep(1000); // 设置线程睡眠的时间
	}catch{
		e.printStacKTrace();
	}
	// 让Ui在线程之上运行
	runOnUiThread(new Runnable(){
		@Override
		public void run() {
			bar.setprogressbar(100); //设置进度条的值	
	});
}

没一次加载程序页面就会更新相对应的值 需要使用if语句判断 但是多个值判断switch语句效率更高一点:

switch(){
case 判断值:
	执行内容
	break;
	
case 判断值:
	执行内容
	break;
	
case 判断值:
	执行内容
	break;
	
case 判断值:
	执行内容
	break;
	
case 判断值:
	执行内容
	break;	

进度条整体代码如下:

package com.example.progress_bar;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends Activity {

	private ProgressBar bar;
	private TextView text;
	int num =  0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//对控件进行绑定
		Progressbar bar = findViewById(R.id.progressbar1); //获取进度条控件
		TextView text = findViewById(R.id.textView1); // 获取字窗控件
		
		new Thread(new Runnable(){ //需要做耗时操作	开启子线程
			@Override
			public void run() {
				// TODO Auto-generated method stub
				while(true){ // 对线程进行执行循环直到num到100
					num++// 相当于num = num + 1;
					try{	// 防止线程睡眠出错使程序崩溃
						Thread.sleep(1000); 
					}catch{
						e.printStackTrace();
					}
				}
				// Ui更新不能在线程里面出现, 
				//所以要是实现runOnUiThread方法, 										
				//让它在子线程之上执行操作;
				runOnUiThread(new Runnable(){
					bar.setprogressbar(num);	//设置进度条的值;
					// 判断num到了多少然后把值显示在TextView窗口上
					switch(num){
						case 20:
							text.setText(String.valueOf(num));
							break;
						case 40:
							text.setText(String.valueOf(num));
							break;
						case 60:
							text.setText(String.valueOf(num));
							break;
						case 80:
							text.setText(String.valueOf(num));
							break;
						case 100:
							text.setText(String.valueOf(num));
							break;	
					}
				});
			}
		}).start();	//让线程启动
}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}

效果图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值