成都网站建设设计

将想法与焦点和您一起共享

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

ProgressBar是进度条,android中的指示器,先看效果图

成都网站制作、成都网站建设的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给创新互联一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。

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

上图中水平进度条可以看见有两种颜色,浅色的是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 



    

    

    
    
    
    
        

布局简单,若要修改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除外


当前题目:Android学习笔记:进度条ProgressBar和线程
网页地址:http://chengdu.cdxwcx.cn/article/gceids.html