进度条,拖动条,星级评分条

进度条ProgressBar的功能和用法

  • ProgressBar概述
    进度条是UI界面中的一种非常实用的组件,通常向用户显示某个耗时操作完成的百分比。因此进度条可以动态地显示进度,避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应,从而更好地提高用户界面的友好性
  • Android支持几种风格的进度条,通过style属性可以为ProgressBar指定风格,该属性支持如下几个属性值。
    1.style=“?android:attr/progressBarStyle” 圆形进度条
    2.style=“?android:attr/progressBarStyleHorizontal” 水平进度条
    3.style=“?android:attr/progressBarStyleInverse” 圆形普通大小进度条
    4.style=“?android:attr/progressBarStyleLarge” 圆形大进度条
    5.style=“?android:attr/progressBarStyleLargeInverse” 圆形大进度条
    6.style=“?android:attr/progressBarStyleSmall” 小圆形进度条
    7.style=“?android:attr/progressBarStyleSmallInverse” 普通大圆形小进度条
    8.style=“?android:attr/progressBarStyleSmallTitle” 带标题的圆形小进度条
  • ProgressBar支持如下表的.xml属性
    1.android:max:设置该进度条的最大值
    2.android:progress设置该进度条的已完成进度值
    3. android:indeterminate该属性设置为true, 设置进度条不精确显示进度
    4.android:indeterminateDrawable设置绘制不显示进度的Drawable对象
  • ProgressBar的重要方法
    1.getMax():返回这个进度条的范围的上限
    2.getProgress():返回进度值 setProgress():
    getSecondaryProgress():返回次要进度值 setSecondaryProgress():
    incrementProgressBy(int diff):指定增加的进度,正数为增加进度,负数为减去进度
    isIndeterminate():判断进度条是否在不精确显示进度模式下
    setIndeterminate(boolean indeterminate):设置进度条不精确显示模式
    setVisibility(int v):设置该进度条是否可视

ProgressBar代码

//在开发时,当需要下载或上传文件时,需要让用户知道当前的进度,就需要使用进度条
//xml中使用
<ProgressBar android:id="@+id/pb_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progress="20"
android:secondaryProgress="50"
style="@android:style/Widget.ProgressBar.Horizontal"
android:max="100"/>
//减少或增加进度,值为整数就是增加,负数就是减少
pb_show.incrementProgressBy(-5);//第一进度
pb_show.incrementSecondaryProgressBy(-3);//第二进度

水平进度条.jpg
标题圆形进度条.jpg
大号圆形进度条.jpg
小号圆形进度条.jpg

拖动条SeekBar的功能和用法

拖动条概述

  • 拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块的位置来标识数值----而且拖动条允许用户拖动滑块来改变值,因此拖动条通常用于对系统的某种数值进行调节,比如调节音量等。
  • SeekBar的主要应用在音乐播放,视频播放,或者对音量调节,屏幕亮度调节的一些操作中,让用户可以手动的去改变相应的值。


    seekbar的重要属性和方法.jpg

SeekBar代码

//在开发过程中,音量及音视频播放的时候,
//需要快速定位到某个地方,这时候可以使用拖动条来实现
//xml中定义拖动条来使用
<SeekBar
android:id="@+id/sb_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255" //最大进度,是音视频的最大时长
android:progress="50" //当前定位到的播放位置/>
//拖动SeekBar,进行监听,调整当前位置
//为seekBar设置监听事件
sb_id.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
//停止拖动
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Log.e("--Main--", "--------停止拖动-------");
}
//开始拖动
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Log.e("--Main--", "--------开始拖动-------");
}
//拖动中
@Override
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
Log.e("--Main--", "--------拖动中:progress="+progress);
iv_head.setAlpha(progress);//修改图片的透明度
tv_show.setText(String.valueOf(progress));//修改文本显示的内容
}
});

星级评分条RatingBar 的功能和用法

  • RatingBar概述
    星级评分条与拖动条十分相似,它们甚至有相同的父类:AbsSeekBar。实际上星级评分条与拖动条的用法、功能都十分接近:它们都允许用户通过拖动来改变进度。RatingBar与SeekBar最大区别在于: RatingBar通过星星来表示进度。
  • 常见 xml属性:
    android:isIndicator:设置该星级评分条是否允许用户改变(true为不允许)
    android:numStarts:设置该星级评分条总共有多少个星级
    android:rating:设置该星级评分条默认的星级
    android:stepSize:设置每次最少需要改变多少个星级
    --RatingBar 实现方法
<RatingBar 
android:id="@+id/room_ratingbar" android:layout_width="wrap_content" android:layout_height="wrap_content" 
android:numStars="5“
 android:rating="4" 
android:layout_marginLeft="10dp" > 
</RatingBar>
  • 设置监听
bar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
             
            @Override
            public void onRatingChanged(RatingBar arg0, float arg1, boolean arg2) {
                Toast.makeText(MainActivity.this,"" + arg1*20, Toast.LENGTH_SHORT).show();
            }
        });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容