zoukankan      html  css  js  c++  java
  • Android开发之进度条ProgressBar

     

    说明

    ProgressBar一般用于显示一个过程,例如数据加载过程,文件下载进度,音乐播放进度等。

    默认形式ProgressBar

    默认方式下,ProgressBar显示为圆形进度,循环转圈,不显示具体的进度值,控制其显隐藏即可,如下

     
    默认

    适用于界面加载

       //xml中
        <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    
       //代码中控制显隐藏
       mProgressBar = (ProgressBar) findViewById(R.id.progress_bar_main);
       mProgressBar.setVisibility(View.VISIBLE);
    

    横向ProgressBar

    横向带进度的进度条,通过设置ProgressBar的Style为style="?android:attr/progressBarStyleHorizontal"

     
    image.png

    max属性指定进度条总进度值,progress设置当前进度值,也可以说是初始进度值

        //xml中
       <ProgressBar
        android:id="@+id/progress_bar_h"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="85dp"
        android:layout_height="10dp"
        android:layout_gravity="center"
        android:max="100"
        android:progress="50"
        />
    

    设进度条背景

    系统自带的进度条的颜色比较单调,实际开发中使用较少,可以自定义进度条背景,新建一个progressbar_bg.xml文件

     <?xml version="1.0" encoding="UTF-8"?>
     <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--  设置背景色  -->
    <item android:id="@android:id/background"
        android:drawable="@mipmap/feed_grow_progress_bar">
    </item>
    
    <!--  设置进度条颜色  -->
    <item android:id="@android:id/progress">
        <clip>
            <shape>
    
                <gradient
                    android:endColor="#fff000"
                    android:startColor="#fff000" />
            </shape>
        </clip>
    </item>
    </layer-list>
    

    gradient可以设置进度条的渐变色, android:endColor和 android:startColor可以设置渐变开始和结束的颜色。定义完成以后,便可以使用

    <ProgressBar
        android:id="@+id/progress_bar_healthy"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="85dp"
        android:layout_height="10dp"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:max="100"
        android:progress="50"
        android:progressDrawable="@drawable/progressbar_bg"
        />
    

    效果图,这里设置了黄色矩形背景,及黄色进度条

     
    image.png

    动态设置

    在音乐进度,网络下载时,需动态加载进度条,默认情况下,设置进度条,使用setProgress()即可。但有时除了动态设置进度,仍需要动态设置进度条颜色

      private void setElectircProgress(int i, int color) {
        ClipDrawable drawable = new ClipDrawable(new ColorDrawable(color), Gravity.LEFT, ClipDrawable.HORIZONTAL);
        progressBarElectric.setProgressDrawable(drawable);
        progressBarElectric.setProgress(i);
    }
    

    音乐播放实例

    通过MediaPlayer 播放音乐并获取进度,设置进度

     
    image.png
    musicProgressBar = (ProgressBar) findViewById(R.id.progress_bar_music);
    
        if (mPlayer != null) {
            mPlayer.release();
            mPlayer = null;
        }
        mPlayer = MediaPlayer.create(this, R.raw.summer);
        mPlayer.start();
        musicProgressBar.setMax(mPlayer.getDuration());
        if (timer != null) {
            timer = null;
            timerTask = null;
        }
        timer = new Timer();
        timerTask = new TimerTask() {
            @Override
            public void run() {
                if (mPlayer != null) {
                    if (mPlayer.isPlaying()) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                musicProgressBar.setProgress(mPlayer.getCurrentPosition());
                            }
                        });
                    }
                }
            }
        };
        timer.schedule(timerTask, 0, 1000);
  • 相关阅读:
    linux系统中rsync+inotify实现服务器之间文件实时同步
    用Nginx搭建CDN服务器方法-开启Nginx缓存与镜像,自建图片服务器
    CentOS 搭建dns服务器 解析任意域名
    批量取控件的值
    我的一类库
    asp.net相关的一些代码
    C#的一些代码
    口算训练(唯一分解定理 + 二分+2018年女生赛)
    Codeforces Round #484 (Div. 2)
    Codeforces Round #483 (Div. 2) [Thanks, Botan Investments and Victor Shaburov!]
  • 原文地址:https://www.cnblogs.com/xgjblog/p/14101896.html
Copyright © 2011-2022 走看看