本节引言:

本节给大家带来的是Android基本UI控件中的ProgressBar(进度条)和SeekBar(拖动条),ProgressBar的应用场景很多,比如 用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用到进度条;或者当在进行一些比较 耗时的操作,需要等待一段较长的时间,这个时候如果没有提示,用户可能会以为程序Carsh或者手机死机 了,这样会大大降低用户体验,所以在需要进行耗时操作的地方,添加上进度条,让用户知道当前的程序 在执行中,也可以直观的告诉用户当前任务的执行进度等!

而SeekBar,相信大家对他并不陌生,最常见的 地方就是音乐播放器或者视频播放器了,音量控制或者播放进度控制,都用到了这个SeekBar

1.ProgressBar

从官方文档,我们看到了这样一个类关系图:

ProgressBar继承与View类,直接子类有AbsSeekBar和ContentLoadingProgressBar, 其中AbsSeekBar的子类有SeekBar和RatingBar,可见这二者也是基于ProgressBar实现的

常用属性详解:

android:max:进度条的最大值

android:progress:进度条已完成进度值

android:progressDrawable:设置轨道对应的Drawable对象

android:indeterminate:如果设置成true,则进度条不精确显示进度

android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象

android:indeterminateDuration:设置不精确显示进度的持续时间

android:secondaryProgress:二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过progress属性进行设置!

对应的再Java中我们可调用下述方法:

getMax():返回这个进度条的范围的上限

getProgress():返回进度

getSecondaryProgress():返回次要进度

incrementProgressBy(int diff):指定增加的进度

isIndeterminate():指示进度条是否在不确定模式下

setIndeterminate(boolean indeterminate):设置不确定模式下

style样式

长形进度条

style="?android:attr/progressBarStyleHorizontal"

标题型圆形ProgressBar

style="?android:attr/progressBarStyleSmallTitle"

小号圆形ProgressBar

style="?android:attr/progressBarStyleSmall

超大号圆形ProgressBa

style="?android:attr/progressBarStyleLarge"

接下来来看看系统提供的默认的进度条的例子吧!

系统默认进度条使用实例:

运行效果图:

实现布局代码:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".MainActivity">

style="@android:style/Widget.ProgressBar.Small"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

style="@android:style/Widget.ProgressBar.Large"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

style="@android:style/Widget.ProgressBar.Horizontal"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:max="100"

android:progress="18" />

style="@android:style/Widget.ProgressBar.Horizontal"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="10dp"

android:indeterminate="true" />

2.SeekBar

嘿嘿,这玩意是ProgressBar的子类耶,也就是ProgressBar的属性都可以用咯! 而且他还有一个自己的属性就是:android:thumb,就是允许我们自定义滑块~ 好的,开始本节内容!

2.1.SeekBar基本用法

好吧,基本用法其实很简单,常用的属性无非就下面这几个常用的属性,Java代码里只要setXxx即可:

android:max="100" //滑动条的最大值

android:progress="60" //滑动条的当前值

android:secondaryProgress="70" //二级滑动条的进度

android:thumb = "@mipmap/sb_icon" //滑块的drawable

接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener 我们只需重写三个对应的方法:

onProgressChanged:进度发生改变时会触发

onStartTrackingTouch:按住SeekBar时会触发

onStopTrackingTouch:放开SeekBar时触发

简单的代码示例:

效果图:

实现代码:

public class MainActivity extends AppCompatActivity {

private SeekBar sb_normal;

private TextView txt_cur;

private Context mContext;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mContext = MainActivity.this;

bindViews();

}

private void bindViews() {

sb_normal = (SeekBar) findViewById(R.id.sb_normal);

txt_cur = (TextView) findViewById(R.id.txt_cur);

sb_normal.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

txt_cur.setText("当前进度值:" + progress + " / 100 ");

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

Toast.makeText(mContext, "触碰SeekBar", Toast.LENGTH_SHORT).show();

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

Toast.makeText(mContext, "放开SeekBar", Toast.LENGTH_SHORT).show();

}

});

}

}

2.2 图片资源自定义SeekBar

1)导入滑动块图片(scrubber.png scrubber_focus.png),进度条就直接xml绘制

scrubber_selector.xml

2) seekbar_layer.xml(进度条绘制)

Android自定义进度条拖动,Android之ProgressBar(进度条)和SeekBar(拖动条)相关推荐

  1. Android自定义成长值、等级、积分进度条(带属性动画)

    现在很多APP的会员进度条.等级.积分进度条都是按分段显示的,由于最近自己的项目也用到类似的控件,如下图所示,于是就自己撸了一个! package progressandanimation.wtt.c ...

  2. android 积分增加动画,Android自定义成长值、等级、积分进度条(带属性动画)

    现在很多APP的会员进度条.等级.积分进度条都是按分段显示的,由于最近自己的项目也用到类似的控件,如下图所示,于是就自己撸了一个! package progressandanimation.wtt.c ...

  3. Android自定义View来实现解析lrc歌词同步滚动、上下拖动、缩放歌词等功能

    http://blog.csdn.net/ouyang_peng/article/details/50813419 前言 一LRC歌词文件简介 1什么是LRC歌词文件 2LRC歌词文件的格式 LRC歌 ...

  4. Android自定义View之仿QQ运动步数进度效果

    文章目录 前言 先看效果图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/6e4ddec17933496ea4830fa08d8ffbe5.png?x-oss-pr ...

  5. android 自定义view实现仿QQ运动步数进度效果

    最近公司在策划一个新的项目,原型还没出来,再说这公司人都要走没了,估计又要找工作了,所以必须要学习,争取每个写个关于自定义view方面的,这样几个月积累下来,也能学习到东西,今天就带来简单的效果,就是 ...

  6. Android自定义组件系列【16】——最帅气的自动滚动广告条

    前一段时间要实现一个滚动的广告条,参考了一下网上许多实现,发现实现都很麻烦,所以我决定自己使用ViewFlipper来实现一个,在此将代码贴出来,与大家共享. 转载请说明出处:http://blog. ...

  7. android自定义主题背景颜色,Android 自定义SeekBar 实现分段显示不同背景颜色的示例代码...

    在最近的开发工作中,要实现一个调色板的进度条,SeekBar要分成10段显示不同颜色,功夫不负有心人,终于实现了这个功能,下面分享给大家 示例图: 1.自定义SeekBar import androi ...

  8. android自定义曲线控件,Android自定义view进阶-- 神奇的贝塞尔曲线

    上一篇介绍了自定义view需要知道的基本函数.新开一篇献给借给我vpn的深圳_奋斗小哥. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/ ...

  9. android 自定义取色器,【Android自定义View】仿Photoshop取色器ColorPicker(二)

    ColorPicker 一款仿Photoshop取色器的Android版取色器. 前言 上一篇已经简单介绍了ColorPicker的项目结构以及两种颜色空间,接下来我们详细解析一下ColorPicke ...

  10. android 自定义view控件,Android 自定义View——自定义View控件

    Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,有时候开发所需要的控件形式是在Android提供的控件中是不存在,这就需要我们自己去定义一个.那么如何自定义控件? 学习自 ...

最新文章

  1. c++图形中如何判断鼠标点击在一条直线上_PS教程:十种抠图方法【上】
  2. WL 2009 professional【已解决】谢谢nooby跟海风
  3. 笔记-中项案例题-2020年下-立项管理
  4. 一文看懂Python(九)-----可变参数函数
  5. 初入c++(三)this指针,友元函数,友元类
  6. 日常客户咨询问题总结
  7. c语言double型小数点后几位_程序的数据要放到哪里呢?|C语言第二篇
  8. 研磨设计模式-设计模式的基础-设计模式的学习【思路】
  9. LoadRunner 11安装手册
  10. DELL笔记本自带键盘启动与关闭方式
  11. Linux中ImageIO生成词云图片中文乱码
  12. 【七夕特效】 -- 满屏爱心
  13. 最近发现有很多人一直在问苹果ID双重认证怎么关闭。
  14. 用户行为分析(如何用数据驱动增长)-读书笔记1
  15. C#工控上位机开发-->1、C#快速编程入门
  16. 【云周刊】第171期:重磅推荐,神龙架构首次开箱直播评测
  17. python创建网盘_超简单!基于Python搭建个人“云盘”
  18. 找桌面背景(win10的和360的)
  19. si7051高精度温度传感器驱动程序
  20. 如何调整照片人物年龄,此生也算共白头,PaddleGAN开源项目安装使用 | 机器学习

热门文章

  1. 阅读 SICP 感想(0. 关于前言和序言)
  2. Delphi XE10让android的界面设计摆脱繁杂
  3. 月报总结|Moonbeam 11月份大事一览
  4. mysql实战22 | MySQL有哪些“饮鸩止渴”提高性能的方法?
  5. VSCode 过滤.meta 文件
  6. ubuntu16.04设置自启动wifi热点
  7. 中国人民大学与加拿大女王大学金融硕士项目不仅实现自我升华还能拿到闪亮文凭
  8. 网站盈利模式分类详解
  9. Windows环境下 .Net PetaPoco 配置 Mysql
  10. matplotlib.pyplot 标记出曲线上最大点和最小点的位置