ProgressBar进度条相关

Posted 故意的是吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ProgressBar进度条相关相关的知识,希望对你有一定的参考价值。

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.bcp.progressbartest.MainActivity">


    <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar" />

    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar2" />

    <ProgressBar
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progressBar3" />

    <ProgressBar
        style="@android:style/Widget.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/horiz"
        android:max="100"
        android:progress="50"
        android:secondaryProgress="80"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/add"
        android:id="@+id/add" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/reduce"
        android:id="@+id/reduce" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/reset"
        android:id="@+id/reset" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/show"
        android:id="@+id/show" />
</LinearLayout>


JAVA

package com.bcp.progressbartest;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

/***
 * ProgressBar
 * 进度条组件,通常用于向用户展示某个耗时操作完成的进度,而不让用户感觉程序失去了响应
 * 目标:
 * 1、制定ProgressBar显示风格
 *  style="?android:attr/progressBarStyleLarge"   大环形进度条
 *  style="?android:attr/progressBarStyleSmall"   小环形进度条
 *  style="?android:attr/progressBarStyleHorizontal"   水平进度条
 *
 * 2、ProgressBar的分类
 * a、可以精确显示进度(可以显示刻度或者百分比)
 * b、不显示精确进度(类似过场动画,一直转动)
 *
 * 3、标题上ProgressBar的设置
 *android studio 中吧MainActivity继承自AppCompatActivity,
 * 改成Activity后 在AndroidManifest.xml中的<activity>的属性里添加
 * android:theme="@android:style/Theme.Holo" 就能显示了
 *
 * 4、ProgressBar的关键属性
 *  进度条可以显示两条,一条深色一条浅色。类似缓冲量和播放量的进度条,
 *  通过已有进度除以总进度可以算出百分比
 *
 *  android:max="100"               最大显示进度
 *  android:progress="50"           第一显示进度
 *  android:secondaryProgress="80"  第二显示进度
 *  android:indeterminate="true"    设置是否精确显示
 *  注意:true标示不精确显示进度,false表示精确显示进度
 *
 * 5、ProgressBar的关键方法
 *  a、setProgress(int)                  设置第一进度
 *  b、setSecondaryProgress(int)         设置第二进度
 *  c、getProgress()                     获取第一进度
 *  d、getSecondaryProgress()            获取第二进度
 *  e、incrementProgressBy(int)          增加或减少第一进度
 *  f、incrementSecondaryProgressBy(int) 增加或减少第二进度
 *  g、getMax()                          获取最大进度
 *
 * 6、ProgressDialog的基础使用
 *
 * 7、自定义ProgressBar样式
 *
 *  横向进度条的属性实质是路径 “@android:style/Widget.ProgressBar.Horizontal”
 *  向上追到系统默认属性查看,可以自定义属性替换系统默认的属性
 */
public class MainActivity extends Activity implements View.OnClickListener
    private ProgressBar progress;
    private Button add;
    private Button reduce;
    private Button reset;
    private TextView text;

    private ProgressDialog prodialog;
    private Button show;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        //启用窗口特征。启用带进度和不带进度的进度天

        //带进度条
        requestWindowFeature(Window.FEATURE_PROGRESS);
        //不带进度条
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

        setContentView(R.layout.activity_main);

        //显示两种进度条    带刻度
        setProgressBarVisibility(true);
        //设置刻度,最大值为1000,是完成状态
        setProgress(6000);
        //android studio 中吧MainActivity继承自AppCompatActivity,改成Activity后
        // 在AndroidManifest.xml中的<activity>的属性里添加android:theme="@android:style/Theme.Holo" 就能显示了

        //不带刻度
        setProgressBarIndeterminateVisibility(true);

        //创建一个方法集体创建对象
        init();


    

    private void init() 
        progress= (ProgressBar) findViewById(R.id.horiz);
        add=(Button)findViewById(R.id.add);
        reduce=(Button)findViewById(R.id.reduce);
        reset=(Button)findViewById(R.id.reset);
        text= (TextView) findViewById(R.id.text);

        show= (Button) findViewById(R.id.show);
        show.setOnClickListener(this);

        //getProgress()获取第一进度条进度
        int first=progress.getProgress();
        //获取第二条的进度
        int second=progress.getSecondaryProgress();

        int max=progress.getMax();

        //获取进度条百分比,int先转float相除后乘以100再转int加上%
        text.setText("First:"+(int)(first/(float)max*100)+"% Second:"+(int)(second/(float)max*100)+"%");

        //设置按钮监听器
        add.setOnClickListener(this);
        reduce.setOnClickListener(this);
        reset.setOnClickListener(this);
    

    @Override
    public void onClick(View view) 
        switch (view.getId())
            //增加两个进度条10刻度
            case R.id.add:
                progress.incrementProgressBy(10);
                progress.incrementSecondaryProgressBy(10);
                break;
            //减少两个进度条10刻度
            case R.id.reduce:
                progress.incrementProgressBy(-10);
                progress.incrementSecondaryProgressBy(-10);
                break;
            //重置时恢复默认值
            case R.id.reset:
                progress.setProgress(50);
                progress.setSecondaryProgress(80);
                break;

            //点击show按钮
            case R.id.show:
                /***
                 * 设置页面风格
                 */
                //新建ProgressDialog对象
                prodialog=new ProgressDialog(MainActivity.this);

                //设置显示风格
                prodialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                //设置标题
                prodialog.setTitle("BCP");
                //设置对话框内的内容
                prodialog.setMessage("Welcome!");
                //添加图标
                prodialog.setIcon(R.mipmap.ic_launcher);

                /***
                 * 设置关于进度条的属性
                 */
                //设置进度条最大刻度
                prodialog.setMax(100);
                //初始进度
                prodialog.incrementProgressBy(50);
                prodialog.incrementSecondaryProgressBy(70);
                //设置明确显示进度
                prodialog.setIndeterminate(false);

                /***
                 * 设定对话框按钮
                 */

                prodialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定", 
                        new DialogInterface.OnClickListener( ) 
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) 
                        Toast.makeText(MainActivity.this, "成功显示", Toast.LENGTH_SHORT).show();
                    
                );

                //是否可以通过返回按钮退出对话框
                prodialog.setCancelable(true);

                //显示出来ProgressDialog
                prodialog.show();
                break;

        

        text.setText("First:"+(int)(progress.getProgress()/(float)progress.getMax()*100)+
                "% Second:"+(int)(progress.getSecondaryProgress()/(float)progress.getMax()*100)+"%");
    



以上是关于ProgressBar进度条相关的主要内容,如果未能解决你的问题,请参考以下文章

C#中怎样改变进度条(progressbar)的颜色?

如何显示ProgressBar的进度条,给分100

android布局文件里的ProgressBar长形进度条怎么自定义样式

如何给progressbar圆形进度条设置颜色

Libgdx之ProgressBar (进度条) Slider(滑动条)

对进度条progressbar的调整