Android组件的使用:ProgressBar与SeekBar

Android中ProgressBar(进度条)与SeekBar(拖动条)的使用

1、ProgressBar


1.1、一个简单的ProgressBar


1)、新建一个布局文件progressbar_layout.xml,通过style属性改变进度条显示风格。


    
	
	


2)、建立Activity类
package com.example.highcomponent;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;

public class ProgressBarDemoActivity extends Activity {
	// 声明组件信息
	private ProgressBar pb_showpb = null;
	private TextView tv_showpbinfo = null; // 用于显示进度条信息

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.progressbar_layout);
		// 实例化组件
		pb_showpb = (ProgressBar) super.findViewById(R.id.pb_showpb);
		tv_showpbinfo = (TextView) super.findViewById(R.id.tv_showpbinfo);
		// 设置进度为10
		pb_showpb.setProgress(10);
	}
}

3)、因为程序没有动态改变进度条的进度,运行效果只是一个静态的进度条:


1.2、一个简单动态进度条


要完成动态的进步条,则需要借助一个类Handler。
    Handler类的作用就是在一个Activity中启动另外一个线程
而且需要重复的给进度条设置值,则需要使用for循环。
而进度条太快无法观察到效果,所以加入线程中的延迟。

继续使用以上布局文件,修改Activity类。
package com.example.highcomponent;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;
import android.widget.TextView;

public class ProgressBarDemoActivity extends Activity {
	// 声明组件信息
	private ProgressBar pb_showpb = null;
	private TextView tv_showpbinfo = null; // 用于显示进度条信息

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.progressbar_layout);
		// 实例化组件
		pb_showpb = (ProgressBar) super.findViewById(R.id.pb_showpb);
		tv_showpbinfo = (TextView) super.findViewById(R.id.tv_showpbinfo);
		final Handler handler = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				super.handleMessage(msg);
				pb_showpb.setProgress(msg.what);      // 设置进度条的值
				tv_showpbinfo.setText(msg.what + "%");// 显示进度条的值
			}
		};
		// 发送消息
		new Thread() {
			@Override
			public void run() {
				for (int i = 0; i <= 100; i++) {
					Message msg = new Message();// 声明和实例化消息
					msg.what = i;		    // 设置消息的值维i
					handler.sendMessage(msg);   // 把消息中的i发送到Handler中
					try {
						Thread.sleep(1000); // 加入延迟
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}
		}.start();// 启动线程

	}
}

2)、运行效果是动态效果,下面只是部分截图:





2、SeekBar(拖动条)


2.1、一个简单SeekBar


1)、新建一个布局文件,seekbar_layout.xml,其中只有两个组件,一个是SeekBar,一个TextView用于显示SeekBar的值。



    
	
	


2)、新建一个Activity类,SeekBarDemoActivity

package com.example.highcomponent;

import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.TextView;

public class SeekBarDemoActivity extends Activity {
	//声明组件
	private SeekBar sb_showsb = null;
	private TextView tv_showsbinfo = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.seekbar_layout);
		//实例化组件
		sb_showsb = (SeekBar)super.findViewById(R.id.sb_showsb);
		tv_showsbinfo = (TextView)super.findViewById(R.id.tv_showsbinfo);
		
		sb_showsb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				tv_showsbinfo.append("停止拖动,当前值:"+seekBar.getProgress()+"\n");
			}
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				tv_showsbinfo.append("开始拖动,当前值:"+seekBar.getProgress()+"\n");
			}
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				tv_showsbinfo.append("seekbar改变,当前值:"+seekBar.getProgress()+"\n");
			}
		});
	}
}

3)、运行效果:

Android组件的使用:ProgressBar与SeekBar_第1张图片

3、ProgressBar与SeekBar一起使用小实例 


3.1、小实例


需求:通过拖动SeekBar可以动态的改变SeekBar和ProgressBar

1)、新建一个布局文件,其中包括四个控件,一个ProgressBar,一个TextView用于显示ProgressBar的信息,一个SeekBar,一个TextView用于显示SeekBar的信息。



    
	
	
	
	


2)、新建一个ProgressBarSeekBarDemoActivity

package com.example.highcomponent;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.SeekBar;
import android.widget.TextView;

public class ProgressBarSeekBarDemoActivity extends Activity {
	//初始化组件
	private ProgressBar pb_showpbsb = null;
	private SeekBar sb_showpbsb = null;
	private TextView tv_showpbsb_pbinfo = null;
	private TextView tv_showpbsb_sbinfo = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.progressbar_seekbar_layout);
		//实例化组件
		pb_showpbsb = (ProgressBar)super.findViewById(R.id.pb_showpbsb);
		sb_showpbsb = (SeekBar)super.findViewById(R.id.sb_showpbsb);
		tv_showpbsb_pbinfo = (TextView)super.findViewById(R.id.tv_showpbsb_pbinfo);
		tv_showpbsb_sbinfo = (TextView)super.findViewById(R.id.tv_showpbsb_sbinfo);
		//为seekbar设置监听事件
		sb_showpbsb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
			
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				tv_showpbsb_sbinfo.append("停止拖动,当前值:"+seekBar.getProgress()+"\n");
			}
			
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				tv_showpbsb_sbinfo.append("开始拖动,当前值:"+seekBar.getProgress()+"\n");
			}
			
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				pb_showpbsb.setProgress(progress);//把seekBar的值设置到progressbar中
				tv_showpbsb_pbinfo.setText("progressbar:"+progress+"%");
				tv_showpbsb_sbinfo.append("seekBar改变,当前值:"+seekBar.getProgress()+"\n");
			}
		});
		
	}
}

3)、运行效果:

Android组件的使用:ProgressBar与SeekBar_第2张图片



你可能感兴趣的:(Android组件的使用:ProgressBar与SeekBar)