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

  }
}

效果图:

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

(0)

相关推荐

  • Android ProgressBar进度条使用详解

    ProgressBar进度条,分为旋转进度条和水平进度条,进度条的样式根据需要自定义,之前一直不明白进度条如何在实际项目中使用,网上演示进度条的案例大多都是通过Button点击增加.减少进度值,使用方法incrementProgressBy(int),最简单的做法是在xml布局文件中放置ProgressBar空间,然后再MainActivity中触发事件后执行incrementProgressBy(int),代码如下: <LinearLayout xmlns:android="http:/

  • android 进度条组件ProgressBar

    首先是main.xml文件 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="fill_parent" androi

  • Android编程实现自定义ProgressBar样式示例(背景色及一级、二级进度条颜色)

    本文实例讲述了Android编程实现自定义ProgressBar样式.分享给大家供大家参考,具体如下: 效果图如下,本例中设置了第一级进度条和第二级进度条. 样式资源:progressbar_bg.xml,放在drawable文件夹下: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/a

  • Android开发之ProgressBar字体随着进度条的加载而滚动

    在网上翻阅了很多关于ProgressBar滚动效果,但是始终没有找到适合项目中的这种效果,故自己写这篇文章,记录一下写作过程,给大家做一个参考.先看下最终效果效果图 我这里用的是LICEcap软件录制的gif图,效果有点掉帧,哪位仁兄有比较好的录制gif的软件烦请相告,小弟在此先行谢过. 首先看下xml代码,只有两个系统控件,一个TextView和一个ProgressBar,Button只是为了方便触发进度条的效果,实际项目中可以根据需求来做.首先看下xml中的代码: <?xml version

  • android ListView和ProgressBar(进度条控件)的使用方法

    ListView控件的使用:ListView控件里面装的是一行一行的数据,一行中可能有多列,选中一行,则该行的几列都被选中,同时可以触发一个事件,这种控件在平时还是用得很多的.使用ListView时主要是要设置一个适配器,适配器主要是用来放置一些数据.使用起来稍微有些复杂,这里用的是android自带的SimpleAdapter,形式如下:android.widget.SimpleAdapter.SimpleAdapter(Context context, List<? extends Map<

  • Android进度条控件progressbar使用方法详解

    一.简介 二.方法 1)进度条ProgressBar使用方法 1.在layout布局文件中创建ProgressBar控件 <ProgressBar style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:progress="30&

  • Android编程之ProgressBar圆形进度条颜色设置方法

    本文实例讲述了Android ProgressBar圆形进度条颜色设置方法.分享给大家供大家参考,具体如下: 你是不是还在为设置进度条的颜色而烦恼呢--别着急,且看如下如何解决. ProgressBar分圆形进度条和水平进度条 我这里就分享下如何设置圆形进度条的颜色吧,希望对大家会有帮助. 源码如下: 布局文件代码: <ProgressBar android:id="@+id/progressbar" android:layout_width="wrap_content

  • Android三种方式实现ProgressBar自定义圆形进度条

    进度条样式在项目中经常可以见到,下面小编给大家分享Android三种方式实现ProgressBar自定义圆形进度条. Android进度条有4种风格可以使用. 默认值是progressBarStyle. 设置成progressBarStyleSmall后,图标变小. 设置成progressBarStyleLarge后,图标变大 设置成progressBarStyleHorizontal后,变成横向长方形. 自定义圆形进度条ProgressBar的一般有三种方式: 一.通过动画实现 定义res/a

  • Android编程实现类似于圆形ProgressBar的进度条效果

    本文实例讲述了Android编程实现类似于圆形ProgressBar的进度条效果.分享给大家供大家参考,具体如下: 我们要实现一个类似于小米分享中的圆形播放进度条,android自带的圆形ProgressBar是默认自动旋转的,所以无法实现,于是我们想到了使用自定义一个View,来实现这种效果. 首先来看看自己定义的View package cn.easymobi.application.bell.common; import android.content.Context; import an

  • Android ProgressBar直线进度条的实例代码

    直线进度条效果图: 点击下载后的效果图: 布局xml文件: empty Java代码: package com.example.android_rogressbar; import android.os.Handler; import android.os.Message; import android.os.StrictMode; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import

随机推荐