Android开发之ProgressBar控件(实现加载动画与条形进度条)

常用属性

android:max 进度条的最大值
android:progress 进度条已完成进度值
android:indeterminate 如果设置为true,则进度条不精确显示进度
style="?android:attr/progressBarStyleHorizontal" 水平进度条

基本框架

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    
</LinearLayout>

运行之后就可以得到一个“加载中”的圆圈进度条:
在这里插入图片描述

按钮控制

添加一个按钮与其点击事件,给进度条取个id,方便在java代码中获取。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

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

    <Button
        android:text="显示/隐藏进度条"
        android:onClick="myClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

在java代码中获取进度条的id,并编写点击事件:

package com.example.myprogressbar;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;

public class MainActivity extends AppCompatActivity {

    private ProgressBar mypb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mypb=findViewById(R.id.pb);
    }


    public void myClick(View view) {
        if(mypb.getVisibility()==View.GONE){
            mypb.setVisibility(View.VISIBLE);
        }
        else{
            mypb.setVisibility(View.GONE);
        }
    }
}

代码的意思是,如果进度条不可见,则令其可见;否则令其不可见。可在虚拟机上看到效果如下:
在这里插入图片描述在这里插入图片描述
通过点击按钮,就可以控制进度条是否显示。

这样的设计在加载网页的时候也是类似的,不过判断条件就变成了数据是否加载完成。

条形进度条

想要一个条形的进度条,我们可以用安卓预设的style。

<ProgressBar
        android:id="@+id/pb2"
        style="?android:attr/progressBarStyleHorizontal"
        android:max="100"
        android:layout_width="300dp"
        android:layout_height="wrap_content"/>

设置该进度条的最大值为100,其进度可以在android:progress中查看。在这里,我们用按钮点击来模拟加载数据,控制进度条的值。

<Button
        android:text="点击为进度条助力"
        android:onClick="load"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
public void load(View view) {
        int progress=mypb2.getProgress();
        progress+=10;
        mypb2.setProgress(progress);
    }

每次点击增加 1 10 \frac{1}{10} 101的进度,效果如下:
在这里插入图片描述在这里插入图片描述
如果将android:indeterminate设置为true,则不显示进度,进度条就变成加载动画的效果。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值