Android的进度条(ProgressBar)、拖动条(SeekBar)

Android的进度条与拖动条


一、ProgressBar(进度条)

 进度条,ProgressBar,分为环形和水平条行, 首先看下效果图,Progress进度加载。

进度条XML中的属性
        style 设置ProgressBar样式风格,可以自定义,系统也自带有样式。
                默认为环形样式

               @android:style/Widget.ProgressBar.Horizontal 水平进度条(粗)

               @android:style/Widget.ProgressBar.Inverse 普通大小环形进度条

               @android:style/Widget.ProgressBar.Large 大环形进度条

               @android:style/Widget.ProgressBar.Large.Inverse 大环形进度条

               @android:style/Widget.ProgressBar.Small 小环形进度条

              @android:style/Widget.ProgressBar.Small.Inverse 小环形进度条

      max 设置进度条最大值

      progress 设置进度条已完成的进度值

对应java代码 则是加上get 与 set

上图对应的java代码如下

public class MainActivity extends Activity {
 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 找到控件
		final ProgressBar bigProgressBar = (ProgressBar) findViewById(R.id.bigprogressBar);
		final ProgressBar smallProgressBar = (ProgressBar) findViewById(R.id.smallprogressBar);
		final TextView tv_progress1 = (TextView) findViewById(R.id.tv_progress1);
		final TextView tv_progress2 = (TextView) findViewById(R.id.tv_progress2);
 
		// 匿名内部类实现按钮点击事件,开始加载
		findViewById(R.id.btn_load).setOnClickListener(new OnClickListener() {
 
			@Override
			public void onClick(View v) {
				start(bigProgressBar, tv_progress1);
				start(smallProgressBar, tv_progress2);
			}
		});
	}
 
	// 进度条开始变化的方法
	public void start(final ProgressBar progressBar, final TextView textView) {
		// 耗时任务放在子线程种进行
		new Thread() {
			private int nowProgress;
			private int maxProgress;
 
			public void run() {
				// 得到进度条当前的值
				nowProgress = progressBar.getProgress();
				// 得到进度条最大值
				maxProgress = progressBar.getMax();
				// 当当前进度小于最大进度值时
				while (nowProgress < maxProgress) {
					nowProgress++;
					progressBar.setProgress(nowProgress);
					// 表示在UI线程种更新TextView因为子线程不能更新UI
					runOnUiThread(new Runnable() {
 
						@Override
						public void run() {
							// 设置TextView的内容
							textView.setText(nowProgress + "/" + maxProgress);
						}
					});
					try {
						// 延时模拟加载进度
						Thread.sleep(50);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			};
		}.start();
	}
}

二、SeekBar (拖动条)

拖动条 SeekBar 外观和水平进度条相似,不过拖动条顾名思义为可拖动的水平进度条

首先看效果图 SeekBar改变手机音量

SeekBar与ProgressBar类似 依然有 max 与 progress属性,对应java代码为set  get

SeekBar有监听事件 即 setOnSeekBarChangeListener()

上图效果java代码如下

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 找到SeekBar
		SeekBar seekBar = (SeekBar) findViewById(R.id.seekbar);
		// 获取音量管理器
		audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
		// 获取当前音乐音量的值 STREAM_MUSIC
		int index = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
		// 获取音乐音量的最大值
		int max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
		// 设置拖动条当前值
		seekBar.setProgress(index);
		// 设置拖动条的最大值
		seekBar.setMax(max);
 
		seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
 
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				// 拖动停止时调用
			}
 
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				// 拖动开始时调用
 
			}
 
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
				// 拖动改变时调用
				// 获取seeKbar的当前值
				int seekBarvalue = seekBar.getProgress();
				// 设置音量大小,并在UI上显示 AudioManager.FLAG_SHOW_UI
				audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, seekBarvalue, AudioManager.FLAG_SHOW_UI);
			}
		});
	}
}

转载于:Android的进度条与拖动条_xhu_ww的博客-CSDN博客_android progressbar 拖动

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值