欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android进度条ProgressBar的实现代码

程序员文章站 2023-12-18 13:29:10
progressbar进度条 当一个应用在后台执行时,前台界面不会有任何信息,这时,用户根本不知道程序是否在执行以及执行的进度等, 因此需要使用进度条来提示程序执行的...

progressbar进度条

当一个应用在后台执行时,前台界面不会有任何信息,这时,用户根本不知道程序是否在执行以及执行的进度等, 因此需要使用进度条来提示程序执行的进度。
而progressbar就是来做这个事情的。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.constraintlayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:app="http://schemas.android.com/apk/res-auto" 
  xmlns:tools="http://schemas.android.com/tools" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  tools:context="com.amy.processbartest.mainactivity"> 
 
  <!--水平进度条 --> 
  <progressbar 
    android:id="@+id/progressbar1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:max="100" 
    style="@android:style/widget.progressbar.horizontal" /> 
 
  <!-- 圆形进度条 --> 
  <progressbar 
    android:id="@+id/progressbar2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    style="?android:attr/progressbarstylelarge"/> 
 
</android.support.constraint.constraintlayout> 

mainactivity.java

package com.amy.processbartest; 
 
import android.os.handler; 
import android.os.message; 
import android.support.v7.app.appcompatactivity; 
import android.os.bundle; 
import android.view.view; 
import android.widget.progressbar; 
import android.widget.toast; 
 
import static android.r.attr.id; 
 
public class mainactivity extends appcompatactivity { 
 
  //定义水平进度条 
  private progressbar horizonp; 
  //定义圆形进度条 
  private progressbar circlep; 
  //完成进度 
  private int mprocessstatus = 0; 
  //声明一个用于处理消息的handler类的对象 
  private handler mhandler; 
 
  /** 
   * 在主活动oncreate方法中,首先获得水平进度条和圆形进度条, 
   * 然后通过匿名内部类实例化处理消息的handler类的对象,并重写其handlermessage方法, 
   * 实现当好吃操作没有完成时更新进度,否则设置进度条不显示。 
   * @param savedinstancestate 
   */ 
  @override 
  protected void oncreate(bundle savedinstancestate) { 
    super.oncreate(savedinstancestate); 
    setcontentview(r.layout.activity_main); 
    horizonp = (progressbar) findviewbyid(r.id.progressbar1); 
    circlep = (progressbar) findviewbyid(r.id.progressbar2); 
    mhandler = new handler(){ 
      @override 
      public void handlemessage(message msg) { 
        if (msg.what == 0x111) { 
          horizonp.setprogress(mprocessstatus);//更新进度 
        } else { 
          toast.maketext(mainactivity.this,"耗时操作已经完成",toast.length_short).show(); 
          horizonp.setvisibility(view.gone); 
          circlep.setvisibility(view.gone); 
        } 
      } 
    }; 
 
    //开个线程用语模拟耗时操作 
    new thread(new runnable() { 
      @override 
      public void run() { 
        while (true) { 
          mprocessstatus = dowork();//获取耗时操作完成的百分比 
          message msg = new message(); 
          if (mprocessstatus<100) { 
            msg.what = 0x111; 
            mhandler.sendmessage(msg);//发送消息 
          } else { 
            msg.what = 0x110; 
            mhandler.sendmessage(msg);//发送消息 
            break; 
          } 
        } 
      } 
      //模拟一个耗时操作 
      private int dowork() { 
        mprocessstatus += math.random()*10;//改变完成进度 
        try { 
          thread.sleep(200);//每隔200毫秒进度改变一次 
        } catch (interruptedexception e) { 
          e.printstacktrace(); 
        } 
        return mprocessstatus;//返回新的进度 
      } 
    }).start();//开启一个新的线程 
 
  } 
} 

效果图:

Android进度条ProgressBar的实现代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: