progressbar
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于progressbar内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在progressbar相关知识领域提供全面立体的资料补充。同时还包含 package、package文件、padding 的知识内容,欢迎查阅!
progressbar相关知识
-
progressBar初阶写一个最原始的Horizontal ProgressBar:Layout 如下:<ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/Widget.AppCompat.ProgressBar.Horizontal" android:max="100"/>代码:public class ThirdActivity extends AppCompatActivity { private ImageView try_1; private ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { supe
-
android ProgressBar样式表Android的ProgressBar样式: style="?android:attr/progressBarStyleHorizontal" 长形进度条 style="?android:attr/progressBarStyleLarge" 超大号圆形ProgressBar style="?android:attr/progressBarStyleSmall" 小号圆形ProgressBar style="?android:attr/progressBarStyleSmallTitle" 标题型圆形ProgressBar
-
ProgressBar及其子类1、ProgressBar(进度条组件) 派生了两个常用的组件:SeekBar和RatingBar。 <1>通过style属性可以为ProgressBar指定风格,该属性可支持如下几个属性值: (1)@android:style/Widget.ProgressBar.Horizontal:水平进度条 (2)@android:style/Widget.ProgressBar.Inverse:普通大小的环形进度条 (3)@android:style/Widget.ProgressBar.Large:大环形进度条 (4)@android:style/Widget.ProgressBar.Large.Inverse:大环形进度条 (5)@android:style/Widget.ProgressBar.Small:小环形进度条 (6)@android:style/Widget.ProgressBar.Small.Inverse:小环形进度条 <2>ProgressBar支持的常用
-
自定义ProgressBar(一)ProgressBar是一个非常重要组件。通常用于向用户显示耗时操作完成的百分比。主要包括水平和圆形两种类型。讲解之前首先来讲一下样式属性设置,这个在自定义里面是核心部分。 本文主要介绍ProgressBar的属性里面的 progressDrawable 和 indeterminateDrawable一、常用属性(一)关于style属性设置:安卓支持几种风格的进度条,通过style属性可以为ProgressBar设置指定风格,该属性可支持如下几个属性值:安卓styles.xml里面的 8个,这8个兼容不同系统版本,一般都用这些style样式用的多属性值属性的含义style="@android:style/Widget.ProgressBar"style="@android:style/Widget.ProgressBar.Large"大环形进度条style="@android:style/Widget.ProgressBar.Small"小环形进
progressbar相关课程
progressbar相关教程
- 4. ProgressBar 编码 Ok,我们有了布局设置以及 API 控制,就可以开始完成一个进度条的开发了,本节将在 Activity 中启动一个子线程,在子线程中通过 sleep 300 毫秒来模拟一个耗时任务,并在执行任务的过程中不断更新进度条。首先编写布局,我们添加一个横向非不确定进度条展示精确精度和一个圆形不确定进度条不展示确定进度,然后添加一个 TextView 用于展示具体的进度情况,代码如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ProgressBar android:id="@+id/progressBar_horizontal" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="30dp" android:indeterminate="false" android:max="100" android:minWidth="200dp" android:minHeight="50dp" android:progress="1" /> <ProgressBar android:id="@+id/progressBar_circle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:minWidth="50dp" android:minHeight="50dp" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/progressBar_horizontal" android:layout_alignLeft="@+id/progressBar_horizontal" /></RelativeLayout>布局完成效果如下,上方有一个进度为 1 的横向进度条,中间有一个循环转圈的圆形进度条。目前任务还没开启,所以还没有进度展示,TextView 内容为空。下面通过 Java 编写后台耗时任务,并同步更新进度条:package com.emercy.myapplication;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends Activity { private ProgressBar progressBar; private int progressStatus = 0; private TextView textView; private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar = findViewById(R.id.progressBar_horizontal); textView = findViewById(R.id.textView); new Thread(new Runnable() { public void run() { while (progressStatus < 100) { progressStatus += 1; handler.post(new Runnable() { public void run() { progressBar.setProgress(progressStatus); textView.setText(progressStatus + "/" + progressBar.getMax()); } }); try { // sleep 300毫秒模拟耗时任务 Thread.sleep(300); } catch (InterruptedException e) { e.printStackTrace(); } } } }); }}在上面的代码中,横向 ProgressBar 会在每 300 毫秒更新一次进度(进度增加多少可以根据具体场景,比如下载量、保存量、解析量等等),更新进度通过setProgress()接口完成。另外本节运用了 Handler 去完成更新,因为耗时操作我们通常会放在子线程,但是 Android 系统要求不能在子线程中进行 UI 操作,所以我们通过 Handler 完成子线程到主线程的切换(具体的使用方法会在后面 Handler 章节详细讲解,这里重点关注 ProgressBar 的使用),直到进度条增加为 100,表示任务完成;而另一个进度条会循环 loading,此时会一直循环播放进度动画,直到主动关闭,下面是一张代码的效果图:
- 进度条 ProgressBar 今天要学的是一个特定场合要用到的控件——进度条控件。进度条的作用不言而喻,而在实际使用中,通常会有两种类型的进度条:横向进度条和圆形进度条。当然,ProgressBar 也是支持这两种类型的,可以应对大多数的开发场景。
- 1. ProgressBar 的特性 ProgressBar 是一个图形类型的控件,用来展示当前进度,可以是下载、跳转、切换、保存等等任何可能比较耗时的任务,它在很多场景下对用户体验是有很大帮助的,所以我们千万不能忽略它,要学会灵活的使用,否则用户可能会以为发送了卡顿或者 ANR 从而关闭应用,大大减低用户体验。
- 2. ProgressBar 的属性 我们先来看看 ProgressBar 的常用属性:android:max:设置 ProgressBar 的最大值,即进度条走完时的总进度。通常和业务相关,比如下载 的时候,那么 max 就可以设置成下载文件的大小。默认是 100。android:indeterminate:设置是否开启不确定模式,该属性是一个 boolean 值。不确定模式就是我们在使用 Android 手机的时候,会有两种进度条的样式,一种是一直循环转圈的,还有一种是会跟随进度改变的。true 表示进度条会展示实际的进度;而 false 表示在加载时会无限循环展示 loading 动画。android:minHeight:设置最小高度。android:minWidth:设置最小宽度。android:progress:设置进度条的当前进度。style:设置进度条的样式,默认情况下,Android 系统会展示一个循环转圈的 loading 样式,而如果需要设置其他样式,就要用的 style 属性,比如通过设置style为android:attr/progressBarStyleHorizontal可以设置成横向进度条的样式。android:progressDrawable:设置进度条对应的 Drawable 对象的样式android:secondaryProgress:设置二级进度条的进度。看过视频或者听过音乐的应该都知道,我们会有两级进度条,一级是播放进度,二级是缓冲进度。基本上常用的属性就这么多,都还比较好理解,这只是添加了一个进度条,如果我们是android:indeterminate模式,那只需要展示进度条和隐藏即可;但是如果android:indeterminate为 false,在实际使用中我们还需要在代码的逻辑里去实时更新进度条,这就需要配合 Java 的 api 来完成了。
- 拖动条 SeekBar 这一节要学的控件是 ProgressBar 的升级版,对于 ProgressBar 而言只能展示进度,而不能与用户互动,也就是没有接收用户输入的能力。而本节要学习的 SeekBar 是一种可以“Seek”的 ProgressBar,用户不但可以通过 SeekBar 观察到进度,还可以随时手动修改进度,相信对此场景你一定不会陌生。没错,在视频播放的场景用 SeekBar 实现在合适不过。
- 3.2 MainActivity 主要的逻辑全在 MainActivity 中实现,要完成以下 3 个任务:线程切换: 在子线程中执行耗时操作更新进度: 在主线程更新ProgressBar,并同步更新TextView消息传递: 通过Handler将进度从子线程传递到主线程基本完成了上面 3 个任务,整个线程通信就搞定了。代码如下:package com.emercy.myapplication;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends Activity { private static final int MAX = 100; private static final int START_PROGRESS = 100; private static final int UPDATE_COUNT = 200; private ProgressBar progressBar; private Button startProgress; private TextView textView; private boolean mHasStart; // 任务2:在主线程刷新进度条 Handler mHandlerThread = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == START_PROGRESS) { if (!mHasStart) { thread.start(); mHasStart = true; } } else if (msg.what == UPDATE_COUNT) { textView.setText("当前进度:" + msg.arg1 + "%"); progressBar.setProgress(msg.arg1); } } }; // 任务1:在子线程执行耗时操作,通过sleep模拟耗时任务 Thread thread = new Thread(new Runnable() { @Override public void run() { for (int i = 0; i <= 100; i++) { try { // 一秒钟的耗时操作 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } Message message = new Message(); message.what = UPDATE_COUNT; message.arg1 = i; mHandlerThread.sendMessage(message); } } }); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar = findViewById(R.id.progressBar); startProgress = findViewById(R.id.start_progress); textView = findViewById(R.id.textView); progressBar.setMax(MAX); startProgress.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 任务3:通过Handler传递进度消息 Message message = new Message(); message.what = START_PROGRESS; mHandlerThread.sendEmptyMessage(START_PROGRESS); } }); }}
progressbar相关搜索
-
pack
package
package文件
padding
pages
page对象
panda
panel
panel控件
param
parameter
parcel
parent
parentnode
parents
parse
parse error
parseint
partition
pascal