Android学习笔记:进度条ProgressBar和线程

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"
        style="@android:style/Widget.ProgressBar.Horizontal"
        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文档中有例子和其他具体方法,不一一介绍。



注意:在原则上来说,除主线程之外,其他线程不允许访问主线程的UI,但ProgressBar除外

时间: 2024-08-10 09:13:59

Android学习笔记:进度条ProgressBar和线程的相关文章

Android学习笔记(三一):线程:Message和Runnable

程序需要相应用户的操作,最要能在200ms(0.2s)之内,如果超过5秒没有反应,ActivityManager会没有提示就kill了activity.然而,activity可能真的需要时间来进行处理,这往往会用到后台线程-background thread.后台线程可以安全地和UI线程进行交互,其中后台线程是不能修改UI的.我不太确切知晓“不能修改UI”到何种程度,例如在下面的例子进度条状态的修改是允许的,在复杂的例子中可能会出现问题,例如两个后台线程都要处理同一个widget,可能会有不可预

【转】 Pro Android学习笔记(七四):HTTP服务(8):使用后台线程AsyncTask

目录(?)[-] 5秒超时异常 AsyncTask 实现AsyncTask抽象类 对AsyncTask的调用 在哪里运行 其他重要method 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog.csdn.net/flowingflying/ 之前,我们直接在activity中执行http通信,在通信过程中可能会出现连接超时.socket超时等情况,超时阈值一般是秒级,例如AndroidHttpClient中设置的20秒,如果出现超时,就

Android学习笔记(五三):服务Service(下)- Remote Service

之前所谈的Service属于Local Service,即Service和Client在同一进程内(即同一application内),Service的生命周期服从进程的生命周期.在实际应用上,有时希望Service作为后台服务,不仅被同一进程内的activity使用,也可被其他进程所使用,针对这种情况,需要采用bindService,也就是Remote Service的方式. 在Android中,不同app属不同进程(process),进程是安全策略的边界,一个进程不能访问其他进程的存储(例如采

Android学习笔记_76_Android ProgressBar 进度条

android 进度条的样式  例1:(默认样式(中等圆形))Xml代码 <ProgressBar      android:id="@+id/progressBar1"     android:layout_width="wrap_content"      android:layout_height="wrap_content"      /> 例2:(超大圆形)Xml代码 <ProgressBar      android

Android学习笔记(24):进度条组件ProgressBar及其子类

ProgressBar作为进度条组件使用,它还派生了SeekBar(拖动条)和RatingBar(星级评分条). ProgressBar支持的XML属性: Attribute Name Related Method Description style 设置ProgressBar指定风格 android:indeterminate 设置为true时,进度条不显示运行进度 android:indeterminateBehavior indeterminate模式下.当进度条达到最大值时的动画处理行为

Android 学习笔记(5)—— ProgressBar

作者:夏至  欢迎转载,也请保留这段申明,谢谢 这一章呢,我们来学习进度条ProgressBar,在我们的网页浏览或者其他下载的时候,总有一个缓冲的UI,那这里就是用到我们的Progress,它有两种形式,一种是圆形,一种是水平的. 先来看看样子 我们要实现就是上面的功能.这里我们先看看它的属性: · android:max   设置范围大小0到max · android:progress 设置当前进度 · android:secondaryProgress  设置第二进度,比如我们的看视频时的

Android(java)学习笔记130:ProgressBar使用的

首先我们看例程如下: 1.main.xml文件如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="f

Android学习笔记(九)——更复杂的进度对话框

显示操作进度的对话框 1.使用上一篇创建的同一项目,在activity_main.xml文件中添加一个Button: <Button android:id="@+id/btn_dialog3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="onClick3" android:text=&qu

Android零基础入门第51节:进度条ProgressBar

不知不觉这已经是第51期了,在前面50期我们学了Android开发中使用频率非常高的一些UI组件,当然这些组件还不足够完成所有APP的开发,还会经常用到一些诸如进度条.拖动条.搜索框.时间和日期选择器等组件,那么后面几期就来一起学习这些高级组件. 一.ProgressBar系列组件 ProgressBar也是一组重要的组件,ProgressBar本身代表了进度条组件,它还派生了两个常用的组件:SeekBar和RatingBar.ProgressBar及其子类在用法上十分相似,只是显示界面有一定的