Android(安卓)之 ProgressBar用法介绍
16lz
2022-01-22
阅读更多 布局文件:
主程序入口:
和 Handler的用法:
主程序入口:
package com.example.progressbar;import java.util.Timer;import java.util.TimerTask;import org.xml.sax.HandlerBase;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.widget.TextView;public class MainActivity extends Activity {private TextView tx;private int count = 0;// 自定义 Handler信息代码,用以作为识别事件处理protected static final int Start_NOTIFIER=0x101;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tx = (TextView) findViewById(R.id.title);uppUI();}/** * 实现 6 秒钟更新 UI 界面 TX 的显示 */public void uppUI() {Timer timer = new Timer(); // 创建爱你Timer 时钟对象timer.scheduleAtFixedRate(new MyShedule(), 1, 1000); //每隔 6 秒中执行 MyShedule}/** * 实现更新的动作 * @author Administrator * */private class MyShedule extends TimerTask {public void run() {Message message = new Message(); //创建message对象message.what = MainActivity.Start_NOTIFIER;//用于自定义消息代码,以便收件人收到信息handler.sendMessage(message); //向Handler发送消息}}//创建Handler 对象,通过实现handleMessage方法,接收信息Handler handler = new Handler(){//注意:子类必须实现这个方法才能接收信息public void handleMessage(Message msg) {switch (msg.what) { //判断消息代码值case MainActivity.Start_NOTIFIER:tx.setText(new Integer(count).toString());count++;break;}}};}
和 Handler的用法:
package com.example.progressbar;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;public class ProgressBarAndHandler extends Activity {private TextView tx;private ProgressBar progressbar;private Button download;private int count = 0;// 自定义 Handler信息代码,用以作为识别事件处理protected static final int STOP_Flag = 0x100;protected static final int THREADING_Flag = 0x101;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取各种对象tx = (TextView) findViewById(R.id.title);progressbar = (ProgressBar) findViewById(R.id.progressbar);download = (Button) findViewById(R.id.download);// 设置按钮单机事件download.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {actionForDownload();}});}/** * 按钮点击动作 */public void actionForDownload() {tx.setText(R.string.start); // 设置按钮上显示值progressbar.setVisibility(View.VISIBLE); // 设置progressbar 为可见状态progressbar.setMax(100); // 设置最大值为:100progressbar.setProgress(0); // 设置当前值为0progressbar.setIndeterminate(false); // 设置进度条为明确显示new Thread() {public void run() {while (count <= 100) {// 小于 100 的时候修改当前进度值try {count = count + 1;Thread.sleep(100); // 休眠 0.1秒// 如果值累加到了 100 则,向Handler发送 STOP_Flag 消息if (count == 100) {Message message = new Message();message.what = ProgressBarAndHandler.STOP_Flag;// 向Handler发送信息代码ProgressBarAndHandler.this.handler.sendMessage(message);break;} else { // 不等于 100 发送THREADING_Flag 消息Message m = new Message();m.what = ProgressBarAndHandler.THREADING_Flag;ProgressBarAndHandler.this.handler.sendMessage(m);}} catch (Exception ex) {ex.printStackTrace();}}}}.start();}// 根据消息进行对应的处理Handler handler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case ProgressBarAndHandler.STOP_Flag: // 表示下载完毕tx.setText("下载完毕");download.setText("下载完毕");progressbar.setVisibility(View.GONE); //设置进度条不可见Thread.currentThread().interrupt(); //中断当前线程break;case ProgressBarAndHandler.THREADING_Flag: // 表示正在下载中progressbar.setProgress(count); //修改当前进度的值tx.setText(getResources().getText(R.string.start)+Integer.toString(count)+"%)\n"+"Progress:"+Integer.toString(progressbar.getProgress()));break;}super.handleMessage(msg);}};}
- progressBar.rar (900.8 KB)
- 下载次数: 3
更多相关文章
- Android中WebView的简单使用
- Android(安卓)可滚动圆形进度条 滑块和进度在进度条上面跟着滚动
- Android读取XML文件(SAX)
- [Android]动态替换Fragment全屏的问题
- Android(安卓)ImageSwitcher
- 使Android支持Lambda表达式
- Android(安卓)getWindow().setFlags方法
- Android(安卓)PopupWindow显示位置和显示大小
- android build kernel make menuconfig及环境设置