文章目录
常用属性基本框架按钮控制条形进度条常用属性
android:max
进度条的最大值
android:progress
进度条已完成进度值
android:indeterminate
如果设置为true
,则进度条不精确显示进度
style="?android:attr/progressBarStyleHorizontal"
水平进度条
基本框架
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>
运行之后就可以得到一个“加载中”的圆圈进度条:
按钮控制
添加一个按钮与其点击事件,给进度条取个id,方便在java代码中获取。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ProgressBarandroid:id="@+id/pb"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid: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;@Overrideprotected 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。
<ProgressBarandroid:id="@+id/pb2"style="?android:attr/progressBarStyleHorizontal"android:max="100"android:layout_width="300dp"android:layout_height="wrap_content"/>
设置该进度条的最大值为100,其进度可以在android:progress
中查看。在这里,我们用按钮点击来模拟加载数据,控制进度条的值。
<Buttonandroid: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);}
每次点击增加110\frac{1}{10}101的进度,效果如下:
如果将android:indeterminate
设置为true,则不显示进度,进度条就变成加载动画的效果。