本文简述在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效果图如下图所示:

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效果图如下图所示:

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效果图如下图所示:

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的更多相关文章

  1. Android 使用ProgressBar实现进度条

    ProgressBar简介ProgressBar是进度条组件,通常用于向用户展示某个耗时操作完成的进度,而不让用户感觉是程序失去了响应,从而更好地提升用户界面的友好型. 课程目标(1)制定Progre ...

  2. Android开发学习之路-该怎么学Android(Service和Activity通信为例)

    在大部分地方,比如书本或者学校和培训机构,教学Android的方式都基本类似,就是告诉先上原理方法,然后对着代码讲一下. 但是,这往往不是一个很好的方法,为什么? ① 学生要掌握这个方法的用途,只能通 ...

  3. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

  4. Android之ProgressBar初步应用

    这里利用 ProgressBar 即时显示下载进度. 途中碰到的问题: 1.主线程中不能打开 URL,和只能在主线程中使用 Toast 等 2.子线程不能修改 UI 3.允许网络协议 4.暂停下载和继 ...

  5. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

  6. java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.ProgressBar$SavedState

    java.lang.ClassCastException: android.view.AbsSavedState$1 cannot be cast to android.widget.Progress ...

  7. Android之ProgressBar

    今天复习一下以前的知识,补充一下ProgressBar控件 progressBar是进度条组件,通常用于用户展示某个耗时操作完成的进度,而不让用户感觉是程序失去了响应,从而更好地提升用户界面的友好性. ...

  8. Android自定义progressBar

    通过继承系统ProgressBar实现 效果图 实现 HorizontalProgressBarWithNumber 自定义属性 <?xml version="1.0" en ...

  9. DoNet屌丝学Android(一)——Android开发准备工作 & No HelloWord & (真机)调试

    先乱扯淡一下吧,本人一.net屌丝,手持Android 4.2.2手机,Win7 x64本本,闲来无聊学习一下Android的开发,至于要开发啥玩意目前没有什么想法,就是想学学,搞不好是三分热度也有可 ...

随机推荐

  1. JPushDemo【极光推送集成,基于v3.1.8版本】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个Demo只是记录极光推送的集成,不能运行. 使用步骤 一.项目组织结构图 注意事项: 1.  导入类文件后需要change包名以 ...

  2. 卷积神经网络之VGG

    2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司的研究员一起研发出了新的深度卷积神经网络:VGGNet,并取得了ILSVRC2014比 ...

  3. 深度召回模型在QQ看点推荐中的应用实践

    本文由云+社区发表 作者:腾讯技术工程 导语:最近几年来,深度学习在推荐系统领域中取得了不少成果,相比传统的推荐方法,深度学习有着自己独到的优势.我们团队在QQ看点的图文推荐中也尝试了一些深度学习方法 ...

  4. Android 切换横竖屏

    一个项目一般会自己先定义项目是横屏还是竖屏但是也有可以横屏和竖屏之间切换的activty. 切换横竖屏的方法: //判断当前屏幕方向if(getRequestedOrientation() == Ac ...

  5. 处理安卓和ios当页面原生键盘弹出,输入框不显示

    $('input').on('click', function () { var target = this; // 使用定时器是为了让输入框上滑时更加自然 setTimeout(function() ...

  6. Vue应用框架整合与实战--Vue技术生态圈篇

    实用框架以及工具 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 Element-UI ★13489 - 饿了么出品的Vue2的web UI工具套件 Vux ★8133 ...

  7. 【死磕 Spring】----- IOC 之 获取验证模型

    原文出自:http://cmsblogs.com 在上篇博客[死磕Spring]----- IOC 之 加载 Bean 中提到,在核心逻辑方法 doLoadBeanDefinitions()中主要是做 ...

  8. #Java学习之路——基础阶段二(第六篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  9. C# 三种打印方式含代码

    一:C#代码直接打印pdf文件(打印质保书pdf文件) 引用: 代码注释很详细了. private void btn_pdf_Click(object sender, RoutedEventArgs ...

  10. 每日分享!~ JavaScript(js数组如何在指定的位置插入一个元素)

      这个想法是在一个面试题中看到的: 题目是这样的: // 一个数组,在指定的index 位置插入一个元素,返回一个新的数组,不改变原来的数组 <script> function inse ...