本文简述在Android开发中进度条(ProgressBar)的常见应用,仅供学习分享使用。

概述

在Android开发中,进度条的使用场景有很多,如播放电影时可拖动的观看进度条,评分时使用的评分条,上传下载时的进度条,网络加载时的圆形进度条等。本文主要讲解三种进度条的常见用法:ProgressBar,SeekBar,RatingBar。

ProgressBar常见用法

ProgressBar涉及知识点

  1. android:max 设置进度条的最大进度
  2. android:progress 设置进度条的当前进度(如播放视频的播放进度)
  3. android:secondaryProgress 设置进度条的第二进度(如播放视频时的缓冲进度)
  4. style="?android:attr/progressBarStyleHorizontal" 设置进度条的样式(水平样式)
  5. style="?android:attr/progressBarStyleLarge" 设置进度条的样式(垂直样式),圆形进度条
  6. isIndeterminate() 判断进度条的形状,true:水平 false:圆形
  7. incrementProgressBy(10) 增加当前的进度 incrementSecondaryProgressBy(10) 增加当前的第二进度。

ProgressBar效果图如下图所示:

一起学Android之ProgressBar-LMLPHP

ProgressBar示例代码:

 <LinearLayout
android:id="@+id/ll_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/ll_seeking"
android:layout_marginTop="8dp"
android:layout_marginRight="15dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/progress1"
android:textSize="20dp"/>
<ProgressBar
android:id="@+id/pb_01"
android:max="100"
android:progress="30"
android:layout_marginLeft="10dp"
android:secondaryProgress="40"
style="?android:attr/progressBarStyleHorizontal"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="40dp"/>
</LinearLayout>
<TextView
android:id="@+id/tv_progress2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/ll_progress"
android:layout_marginTop="8dp"
android:text="@string/progress2"
android:textSize="20dp"/>
<ProgressBar
android:id="@+id/pb_02"
android:layout_alignLeft="@id/rbar"
android:layout_below="@id/ll_progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

SeekBar常见用法

SeekBar涉及知识点

  1. android:max ,android:progress ,android:secondaryProgress此三个属性和ProgressBar相同,参考上面。
  2. setOnSeekBarChangeListener 用于设置SeekBar的监听事件,监听用户拖动的状态。
  3. OnSeekBarChangeListener表示一个接口,有三个函数需要实现:
    • onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) //进度改变
    • onStartTrackingTouch(SeekBar seekBar) //开始触摸
    • onStopTrackingTouch(SeekBar seekBar) //停止触摸

SeekBar效果图如下图所示:

一起学Android之ProgressBar-LMLPHP

SeekBar示例代码

  //监控SeekBar事件
mSeekBar=(SeekBar)this.findViewById(R.id.sbar);
mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
Log.i("DemoBar", "SeekBar-->setOnSeekBarChangeListener: "+String.valueOf(progress)+"-->fromUser:"+String.valueOf(fromUser));
mSeekText.setText(String.valueOf(progress));
} @Override
public void onStartTrackingTouch(SeekBar seekBar) { } @Override
public void onStopTrackingTouch(SeekBar seekBar) { }
});

RatingBar常见用法

RatingBar涉及知识点

  1. android:numStars 表示星星的个数,默认为5个
  2. android:rating 表示当前的分值
  3. android:stepSize 表示步长,及前进一次多长的跨度,如,0.5表示半颗星星 1表示一颗心
  4. setOnRatingBarChangeListener 设置监听事件,
  5. OnRatingBarChangeListener 表示一个接口,只有一个函数需要实现:
    • onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser)

RatingBar效果图如下图所示:

一起学Android之ProgressBar-LMLPHP

RatingBar示例代码

  mRatingBar =(RatingBar) this.findViewById(R.id.rbar);
mRatingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
Log.i("DemoBar", "RatingBar-->onRatingChanged: "+String.valueOf(rating)+"-->fromUser:"+String.valueOf(fromUser));
mRatingText.setText(String.valueOf(rating));
}
});

备注

一起学习,一起总结,一起进步。附上整体演示图片

一起学Android之ProgressBar-LMLPHP

05-08 08:37