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

文章目录

  • 常用属性
  • 基本框架
  • 按钮控制
  • 条形进度条

常用属性

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

基本框架


<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>

运行之后就可以得到一个“加载中”的圆圈进度条:
Android开发之ProgressBar控件(实现加载动画与条形进度条)_第1张图片

按钮控制

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


<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);
        }
    }
}

代码的意思是,如果进度条不可见,则令其可见;否则令其不可见。可在虚拟机上看到效果如下:
Android开发之ProgressBar控件(实现加载动画与条形进度条)_第2张图片Android开发之ProgressBar控件(实现加载动画与条形进度条)_第3张图片
通过点击按钮,就可以控制进度条是否显示。

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

条形进度条

想要一个条形的进度条,我们可以用安卓预设的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开发之ProgressBar控件(实现加载动画与条形进度条)_第4张图片Android开发之ProgressBar控件(实现加载动画与条形进度条)_第5张图片
如果将android:indeterminate设置为true,则不显示进度,进度条就变成加载动画的效果。
Android开发之ProgressBar控件(实现加载动画与条形进度条)_第6张图片

你可能感兴趣的:(Android开发,android,动画,java)