当前位置: 移动技术网 > IT编程>移动开发>Android > Android进度条ProgressBar的实现代码

Android进度条ProgressBar的实现代码

2019年07月24日  | 移动技术网IT编程  | 我要评论

大棚黄瓜种植技术,gogo tester,可爱颂歌词中文

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();//开启一个新的线程 
 
  } 
} 

效果图:

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网