进度条ProgressBar
时间:2022-04-23
本文章向大家介绍进度条ProgressBar,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
拖动滑块改变图片透明度
1.布局
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="vertical"
6 tools:context=".AndroidProgerssBarActivity" >
7
8 <TextView
9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:layout_centerHorizontal="true"
12 android:layout_centerVertical="true"
13 android:text="任务完成进度" />
14
15 <ProgressBar
16 android:id="@+id/bar"
17 style="@android:style/Widget.ProgressBar.Horizontal"
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:max="100" />
21
22 <ProgressBar
23 android:id="@+id/bar2"
24 style="@android:style/Widget.ProgressBar.Horizontal"
25 android:layout_width="match_parent"
26 android:layout_height="wrap_content"
27 android:max="100"
28 android:progressDrawable="@drawable/ic_launcher" >
29 </ProgressBar>
30
31 <Button
32 android:id="@+id/btn1"
33 android:layout_width="match_parent"
34 android:layout_height="wrap_content"
35 android:text="显示进度条" />
36 <Button
37 android:id="@+id/btn2"
38 android:layout_width="match_parent"
39 android:layout_height="wrap_content"
40 android:text="不显示进度条" />
41
42 </LinearLayout>
2.逻辑控制
1 package com.example.androidprogerssbar;
2
3 import android.os.Bundle;
4 import android.os.Handler;
5 import android.os.Message;
6 import android.app.Activity;
7 import android.view.Menu;
8 import android.view.View;
9 import android.view.View.OnClickListener;
10 import android.view.Window;
11 import android.widget.Button;
12 import android.widget.ProgressBar;
13
14 public class AndroidProgerssBarActivity extends Activity {
15
16 // 模拟填充长度为100的数组
17 private int[] data = new int[100];
18 int hasData = 0;
19 // 记录ProgressBar完成进度
20 int status = 0;
21
22 @Override
23 protected void onCreate(Bundle savedInstanceState) {
24 super.onCreate(savedInstanceState);
25
26 //设置窗口特征,启用显示进度的进度条
27 requestWindowFeature(Window.FEATURE_PROGRESS);
28 //设置窗口特征,不启用显示进度的进度条
29 requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
30 setContentView(R.layout.activity_android_progerss_bar);
31 Button btn1=(Button)this.findViewById(R.id.btn1);
32 Button btn2=(Button)this.findViewById(R.id.btn2);
33
34 final ProgressBar bar = (ProgressBar) this.findViewById(R.id.bar);
35 final ProgressBar bar2 = (ProgressBar) this.findViewById(R.id.bar2);
36
37 btn1.setOnClickListener(new OnClickListener() {
38
39 @Override
40 public void onClick(View arg0) {
41 //显示不带进度的进度条
42 setProgressBarIndeterminateVisibility(true);
43 //显示带进度的进度条
44 setProgressBarVisibility(true);
45 //设置进度条进度
46 setProgress(4500);
47 }
48 });
49
50 btn2.setOnClickListener(new OnClickListener() {
51
52 @Override
53 public void onClick(View arg0) {
54 //显示不带进度的进度条
55 setProgressBarIndeterminateVisibility(false);
56 //显示带进度的进度条
57 setProgressBarVisibility(false);
58 }
59 });
60
61 // 创建一个负责更新进度的Handler
62 final Handler handler = new Handler() {
63
64 @Override
65 public void handleMessage(Message msg) {
66 // 表明消息是由该程序发送的
67 if (msg.what == 0x111) {
68 bar.setProgress(status);
69 bar2.setProgress(status);
70 }
71 }
72
73 };
74
75 // 启动线程执行任务
76 new Thread() {
77 public void run() {
78 while (status < 100) {
79 // 获得耗时操作的完成百分比
80 status = doWork();
81 // 发送消息到Handler
82 Message m = new Message();
83 m.what = 0x111;
84 // 发送消息
85 handler.sendMessage(m);
86 }
87 }
88 }.start();
89 }
90
91 // 模拟一个耗时操作
92 public int doWork() {
93 data[hasData++] = (int) (Math.random() * 100);
94 try {
95 Thread.sleep(100);
96 } catch (InterruptedException e) {
97 e.printStackTrace();
98 }
99 return hasData;
100 }
101
102 @Override
103 public boolean onCreateOptionsMenu(Menu menu) {
104 // Inflate the menu; this adds items to the action bar if it is present.
105 getMenuInflater().inflate(R.menu.activity_android_progerss_bar, menu);
106 return true;
107 }
108
109 }
- WCF中的Binding模型之一: Binding模型简介
- WCF中的Binding模型之一: Binding模型简介
- 2017最火的五篇深度学习论文 总有一篇适合你
- SplashScreenSource的妙用
- SplashScreenSource的妙用
- SplashScreenSource的妙用
- Nodejs学习笔记(十七)--- 浮点运算decimal.js
- AI时代让自己幸福更是一种能力
- 持续不断地推荐儿童不宜视频背后,YouTube是这样训练AI的
- 人工智能会导致大量失业,你怕吗
- 机器人产业链分析-中国机器人产业的发展机遇和挑战
- 如何与深度学习服务器优雅的交互?
- 比特币大跌又反弹30%,区块链技术与企业级有着怎样的关系?
- 十个实用MySQL函数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 因为喜欢所以升级,MyStaging-3.0 继续
- 环境与工具篇:建立高效的macos环境
- 0202年你还不知道面向对象?
- 十问泛型,你能扛住吗?
- 【两万字】面试官:听说你精通集合源码,接我二十个问题!
- 手把手教你搭建一个技术人的博客
- 发布更新|腾讯云 Serverless 产品动态 20200723
- Spring中异步注解@Async的使用、原理及使用时可能导致的问题
- Elasticsearch 聚合数据结果不精确,怎么破?
- Elasticsearch 预处理没有奇技淫巧,请先用好这一招!
- 时滞微分方程的matlab解法
- Zabbix Monitoring Logstash
- Join()和 List()的 6 种化学反应
- lettuce和hbase中对netty的使用你都了解吗?
- SAS-新规试行下诞生的程序