文档章节

Android 第十二课——UI ProgressBar

learn_more
 learn_more
发布于 2015/01/11 16:19
字数 614
阅读 219
收藏 3

Android UI 图:

7 ProgressBar

进度条视图,这种视图有两种方式展示,一种是不知道什么时候可以结束的旋转视图展示,例如我们web后台请求是根本不知道后台什么时候可以返回数据;一种是进度条展示,类似于下载,这种明确知道共有多少数据,已经获取到了多少数据的进度条展示。

1)旋转图标:

注意:当请求完成是应该隐藏图标,任务开始时显示图标。

通过设置 ProgressBar 的 Visibility 属性为 View.GONE (值 8)来隐藏它。INVISIBLE 和 GONE 常量的区别在于 INVISIBLE 常量只是隐藏 ProgressBar(ProgressBar 仍旧在活动中占据空间)。GONE 常量则从活动中移除 ProgressBar 视图,它不再占据任何空间。View.VISIBLE自然就是显示的意思。只有这三个值,而且是与其他组件通用属性,在xml中使用标签:android:visibility

layout.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" 
     >
    <Button 
        android:id="@+id/start_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="动作开始"/>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="当前进度:"
        />
    <ProgressBar 
       	android:id="@+id/progress_btn"
       	android:layout_width="match_parent"
       	android:layout_height="wrap_content"
       	android:visibility="visible"
       	/>
</LinearLayout>

Activity代码:

public class ProgressBarActivity extends Activity {
	
	private ProgressBar bar;
	private Button btn;
	
	private int progressStatus;
	private Handler handler;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.activity_progressbar);
		
		bar = (ProgressBar)findViewById(R.id.progress_btn);
		btn = (Button)findViewById(R.id.start_btn);
		btn.setOnClickListener(new BtnClickImpl());
		
		handler = new Handler();
	}
	class BtnClickImpl implements OnClickListener{

		@Override
		public void onClick(View view) {
			// TODO Auto-generated method stub
			new Thread(){
				public void run() {
					// 开始
					handler.post(new Runnable() {
						@Override
						public void run() {
							// TODO Auto-generated method stub
							Toast.makeText(ProgressBarActivity.this,"开始...", Toast.LENGTH_SHORT).show();
							//bar.setMax(100);
							bar.setVisibility(View.VISIBLE);
						}
					});
					// 运行中....
					while(progressStatus < 100){
						progressStatus++;
						try {
							Thread.sleep(50l);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						handler.post(new Runnable() {
							public void run() {
								// TODO Auto-generated method stub
								//bar.setProgress(progressStatus);
							}
						});
					}
					// 结束
					handler.post(new Runnable() {
						@Override
						public void run() {
							// TODO Auto-generated method stub
							Toast.makeText(ProgressBarActivity.this, "动作完成..", Toast.LENGTH_SHORT).show();
							progressStatus = 0;
							bar.setVisibility(View.GONE);
						}
					});
				};
			}.start();
		}
	}
}

效果:

2)进度条图标

注意:当请求开始时:设置progressBar的最大值,以及初始化他的progress(起始值);请求结束时:隐藏进度条,把progress设置为初始值。在运行中,通过不断改变progress的值,来展示进度条的具体进度。

layout.xml

<ProgressBar 
       	android:id="@+id/progress_btn"
       	android:layout_width="match_parent"
       	android:layout_height="wrap_content"
       	android:visibility="visible"
       	style="@android:style/Widget.ProgressBar.Horizontal"
       	/>

Activity.java代码和上面的差不了多少,只要把单行注释放开即可。

效果:



© 著作权归作者所有

learn_more
粉丝 93
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
在项目中值得学习和利用的Android开源项目分类汇总

http://blog.csdn.net/dianyueneo/article/details/40683285 Android开源项目第一篇——个性化控件(View)篇 包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、Pro......

_FQ_
2014/12/24
21
1
android AsyncTask介绍

AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(...

postdep
2014/04/07
129
0
AsyncTask和Handler对比

AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(...

等待流星
2014/03/13
39
0
android AsyncTask介绍

1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更...

freeroad
2014/09/28
37
0
Android 异步处理AsyncTask

AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(...

jackxu2015
2015/08/14
46
0

没有更多内容

加载失败,请刷新页面

加载更多

vue.js-详解三大流行框架VUE_快速进阶前端大咖-Vue基础

作者 | Jeskson 来源 | 达达前端小酒馆 Vue概述: MVX模式简介,Vue框架简介,Vue.js的安装与使用。 Vue基础语法: 实例对象,生命周期,模板语法,计算属性,methods方法 Vue渲染: 列表渲染...

达达前端小酒馆
今天
4
0
OSChina 周五乱弹 —— 匹诺曹也是韩国人

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @watergood :分享海先生的单曲《烟花巷》 《烟花巷》- 海先生 手机党少年们想听歌,请使劲儿戳(这里) @Cyber-Pan :已经很久没有十点前下过...

小小编辑
今天
8
1
Snack3 之 Jsonpath使用

Snack3 之 Jsonpath使用 一、 Snack3 和 JSONPath 介绍 Snack3 是一个支持JSONPath的JSON框架。JSONPath是一个很强大的功能,也可以在Java框架中当作对象查询语言(OQL)来使用。 <dependenc...

刘之西东
今天
5
0
7. 彤哥说netty系列之Java NIO核心组件之Selector

<p align="right">——日拱一卒,不期而至!</p> 你好,我是彤哥,本篇是netty系列的第七篇。 简介 上一章我们一起学习了Java NIO的核心组件Buffer,它通常跟Channel一起使用,但是它们在网络...

彤哥读源码
昨天
21
0
在Jupyter notebooks 中运行GRASS GIS

在Ubuntu16.04中,首先安装jupyter: python3 -m pip install --upgrade pippython3 -m pip install jupyter 然后创建一个sh脚本: # directory where GRASS GIS lives# GRASS GIS 的安装......

ddd口木呆
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部