Progressbar2
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity" xmlns:android="http://schemas.android.com/apk/res/android"> <ProgressBar android:id="@+id/progressBar" android:layout_width="match_parent" android:layout_height="wrap_content" style="@android:style/Widget.ProgressBar.Horizontal" android:max="100" android:layout_alignParentBottom="true" android:layout_marginBottom="50dp" /> </RelativeLayout>
MainActivity.java
package com.example.myprogressbar2; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.view.View; import android.view.WindowManager; import android.widget.ProgressBar; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private ProgressBar progressBar; private int mProgress = 0; private Handler mHandle; @SuppressLint("HandlerLeak") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //设置全屏显示 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); progressBar=findViewById(R.id.progressBar); //实例化Handler类,Android不支持主线程更新UI组件 mHandle= new Handler(Looper.myLooper()){ @Override public void handleMessage(@NonNull Message msg) { //处理发送的消息 if(msg.what == 0x111){ //更新进度条 progressBar.setProgress(mProgress); }else{ //耗时操作完成 Toast.makeText(MainActivity.this, "耗时操作已完成", Toast.LENGTH_SHORT).show(); progressBar.setVisibility(View.GONE); } } }; //创建线程,模拟耗时操作 new Thread(new Runnable() { @Override public void run() { while (true){ //实时获取耗时操作百分比 mProgress = doWork(); //创建消息对象 Message m = new Message(); //判定耗时操作是否完成 if (mProgress < 100) { m.what = 0x111; mHandle.sendMessage(m); }else{ m.what = 0x110; mHandle.sendMessage(m); //耗时操作完成,退出while循环 break; } } } //模拟耗时操作 private int doWork(){ //随机数 mProgress +=Math.random()*10; try { //休眠200ms Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } return mProgress; } }).start();//开启线程 } }

浙公网安备 33010602011771号