当前位置: 首页 > news >正文

ProgressBar

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

ProgressBar提供了如下方法操作进度:

setProgress(int)设置进度的完成百分比
incrementProgressBy(int)设置进度条的进度增加或减少。正数增加,负数减少

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<TextView 
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:text="任务完成的进度"
	/>
<!-- 定义一个水平进度条 -->
<ProgressBar
	android:id="@+id/bar"
 	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:max="100"
	style="@android:style/Widget.ProgressBar.Horizontal"
	/>
<!-- 定义一个水平进度条,并改变轨道外观 -->
<ProgressBar
	android:id="@+id/bar2"
 	android:layout_width="fill_parent" 
	android:layout_height="wrap_content"
	android:max="100"
	android:progressDrawable="@drawable/my_bar"
	style="@android:style/Widget.ProgressBar.Horizontal"
	/>
</LinearLayout>

/res/drawable-mdpi/my_bar.xml

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
	<!-- 定义轨道的背景 -->
	<item android:id="@android:id/background"
		android:drawable="@drawable/no" />
	<!-- 定义轨道上已完成部分的样式 -->
	<item android:id="@android:id/progress"
		android:drawable="@drawable/ok" />
</layer-list>

MainActivity

package org.crazyit.progress;

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

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class ProgressBarTest extends Activity
{
	//该程序模拟填充长度为100的数组
	private int[] data = new int[100];
	int hasData = 0;
	//记录ProgressBar的完成进度
	int status = 0;	
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		final ProgressBar bar = (ProgressBar) findViewById(R.id.bar);
		final ProgressBar bar2 = (ProgressBar) findViewById(R.id.bar2);
		//创建一个负责更新的进度的Handler
		final Handler mHandler = new Handler()
		{
			@Override
			public void handleMessage(Message msg)
			{
				//表明消息是由该程序发送的。
				if (msg.what == 0x111)
				{
					bar.setProgress(status);
					bar2.setProgress(status);
				}
			}
		};
		//启动线程来执行任务
		new Thread()
		{
			public void run()
			{
				while (status < 100)
				{
					// 获取耗时操作的完成百分比
					status = doWork();
					// 发送消息到Handler
					Message m = new Message();
					m.what = 0x111;
					// 发送消息
					mHandler.sendMessage(m);
				}
			}
		}.start();
	}
	//模拟一个耗时的操作。
	public int doWork()
	{
		//为数组元素赋值
		data[hasData++] = (int)(Math.random() * 100);
		try
		{
			Thread.sleep(100);
		}
		catch (InterruptedException e)
		{
			e.printStackTrace();
		}
		return hasData;
	}
}

显示在标题上的进度条

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	>
<Button
	android:id="@+id/bn01"  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:layout_gravity="center_horizontal"
	android:text="显示"
	/>
<Button
	android:id="@+id/bn02"  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:layout_gravity="center_horizontal"
	android:text="隐藏"
	/>	
</LinearLayout>

MainActivity

package org.crazyit.progressbar;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;

/**
 * Description:
 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> 
 * <br/>Copyright (C), 2001-2012, Yeeku.H.Lee
 * <br/>This program is protected by copyright laws.
 * <br/>Program Name:
 * <br/>Date:
 * @author  Yeeku.H.Lee kongyeeku@163.com
 * @version  1.0
 */
public class TitleProgressBar extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
//		//设置窗口特征:启用显示进度的进度条
//		requestWindowFeature(Window.FEATURE_PROGRESS);
		//设置窗口特征:启用不显示进度的进度条
		requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
		setContentView(R.layout.main);
		Button bn1 = (Button)findViewById(R.id.bn01);
		Button bn2 = (Button)findViewById(R.id.bn02);
		bn1.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//显示不带进度的进度条。
				setProgressBarIndeterminateVisibility(true);
				//显示带进度的进度条。
				setProgressBarVisibility(true);
				//设置进度条的进度
				setProgress(4500);	
				
			}
		});
		bn2.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//隐藏不带进度的进度条。
				setProgressBarIndeterminateVisibility(false);
				//隐藏带进度的进度条。
				setProgressBarVisibility(false);
			}
		});	
	}
}


转载于:https://my.oschina.net/mutouzhang/blog/207066

相关文章:

  • linux 学习(三) php相关
  • 欧拉计划的Python解法(1-10)
  • SharePoint 网站登录不上,3次输入用户名/密码白页、
  • 关于C语言指针几个容易混淆的概念
  • 八一八android开发规范(一种建议)
  • 产品经理:想爱没那么简单
  • 进程ps、kill 、grep
  • 准确修改虚拟机名称方法
  • cacti导入Linux主机模板 Windows主机模板
  • 英文字体免费下载:10款最新的高品质字体
  • sass教程汇总
  • Mark Russinovich 的博客:Windows Azure 主机更新:原因、时间和方式
  • 分享几个响应式开发的代码小技巧
  • adb 使用体验
  • 绝美风景!20幅全球地理风光摄影欣赏【组图】
  • [LeetCode] Wiggle Sort
  • Django 博客开发教程 16 - 统计文章阅读量
  • Docker下部署自己的LNMP工作环境
  • iOS | NSProxy
  • KMP算法及优化
  • log4j2输出到kafka
  • Lsb图片隐写
  • mysql常用命令汇总
  • php ci框架整合银盛支付
  • Vue2.x学习三:事件处理生命周期钩子
  • 第2章 网络文档
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 山寨一个 Promise
  • 2017年360最后一道编程题
  • ![CDATA[ ]] 是什么东东
  • (1)STL算法之遍历容器
  • (ibm)Java 语言的 XPath API
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (六)vue-router+UI组件库
  • (全注解开发)学习Spring-MVC的第三天
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (原)本想说脏话,奈何已放下
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Scala的“=”符号简介
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .NET 指南:抽象化实现的基类
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET成年了,然后呢?
  • .Net多线程总结
  • /etc/fstab和/etc/mtab的区别
  • @DataRedisTest测试redis从未如此丝滑
  • @Validated和@Valid校验参数区别
  • [C++][基础]1_变量、常量和基本类型
  • [CodeForces-759D]Bacterial Melee
  • [HEOI2013]ALO
  • [JS7] 显示从0到99的100个数字