ProgressBar是进度条,android中的指示器,先看效果图
上图中水平进度条可以看见有两种颜色,浅色的是SecondaryProgress,可以用作展示中间进度用。
ProgressBar是有多种样式的,有水平的和圆圈打转的。若需要指示进度的可以使用水平的,其他样式在可以在android api文档找到
Other progress bar styles provided by the system include:
Widget.ProgressBar.Horizontal
Widget.ProgressBar.Small
Widget.ProgressBar.Large
Widget.ProgressBar.Inverse
Widget.ProgressBar.Small.Inverse
Widget.ProgressBar.Large.Inverse
先看下布局文件activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.jam.testprogressbar.MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<ProgressBar
android:id="@+id/id_firstbar_id"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:visibility="gone" />
<ProgressBar
android:id="@+id/id_spinningbar_id"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:visibility="gone"/>
<Button
android:id="@+id/id_buttonfirst"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="addfirst"/>
<Button
android:id="@+id/id_buttonsecond"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="addsecond"/>
</LinearLayout>
布局简单,若要修改ProgressBar,只需要改style的内容即可。
然后是MainActivity.java 的内容:
package com.jam.testprogressbar;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
public class MainActivity extends Activity {
//声明控件
private ProgressBar firstProgressBar;
private ProgressBar secondProgressBar;
private Button buttonFirst;
private Button buttonSecond;
private int i = 0;
private int j = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firstProgressBar = (ProgressBar) findViewById(R.id.id_firstbar_id);
secondProgressBar = (ProgressBar) findViewById(R.id.id_spinningbar_id);
buttonFirst = (Button) findViewById(R.id.id_buttonfirst);
buttonSecond = (Button) findViewById(R.id.id_buttonsecond);
/**
* 给第一个按钮绑定匿名内部类
* 在i==0时,显示两个ProgressBar
* i《100 时,每按一次就加10。
* 当i超过100,则隐藏两个ProgressBar
*/
buttonFirst.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(i == 0) {
firstProgressBar.setVisibility(View.VISIBLE);
secondProgressBar.setVisibility(View.VISIBLE);
i += 10;
j = i;
firstProgressBar.setProgress(i);
firstProgressBar.setSecondaryProgress(j);
} else if( i < 100){
i += 10;
j = i;
firstProgressBar.setProgress(i);
}
else {
i = 0;
j = i;
firstProgressBar.setVisibility(View.GONE);
secondProgressBar.setVisibility(View.GONE);
}
}
});
/**
* 第二个按钮,对SecondaryProgress进行设置。
*/
buttonSecond.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(i != 0) {
j += 10;
firstProgressBar.setSecondaryProgress(j);
}
}
});
}
}
实现进度条代码比较简单,在api文档中有例子和其他具体方法,不一一介绍。
除了主线程之外的线程都叫worker thread。
ProgressBar要与线程使用,只需要写一个类继承Thread或者实现Runnable即可。
注意:在原则上来说,除主线程之外,其他线程不允许访问主线程的UI,但ProgressBar除外
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。