运行前

运行后

布局文件

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.asynctask.MainActivity" ><ProgressBarandroid:id="@+id/progressBar1"style="?android:attr/progressBarStyleHorizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_centerHorizontal="true"android:layout_marginTop="80dp" /><Buttonandroid:id="@+id/StartBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBottom="@+id/progressBar1"android:layout_alignLeft="@+id/progressBar1"android:layout_marginBottom="30dp"android:text="StartBtn" /><Buttonandroid:id="@+id/StopBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/StartBtn"android:layout_alignBottom="@+id/StartBtn"android:layout_alignRight="@+id/progressBar1"android:text="StopBtn" /><ProgressBarandroid:id="@+id/progressBar2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_below="@+id/progressBar1" /><TextViewandroid:id="@+id/time_view"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/StartBtn"android:layout_alignBottom="@+id/StartBtn"android:layout_centerHorizontal="true"android:text="TextView" /></RelativeLayout>

主要代码

package com.example.asynctask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;public class MainActivity extends Activity {/** Called when the activity is first created. */private ProgressBar progressBar;private ProgressBar progressBar2;private Button startButton;private Button  stopButton;private int seconds=0;private boolean running;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);runTimer();progressBar = (ProgressBar) findViewById(R.id.progressBar1);progressBar2 = (ProgressBar) findViewById(R.id.progressBar2);startButton = (Button) findViewById(R.id.StartBtn);stopButton = (Button) findViewById(R.id.StopBtn);startButton.setOnClickListener(new ProgressBarOnClickListener());stopButton.setOnClickListener(new ProgressBarOnClickListener1());progressBar2.setVisibility(View.GONE);}class ProgressBarOnClickListener implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub// 设置进度条为可见状态progressBar.setVisibility(View.VISIBLE);// 添加updataThread到消息队列updateBarHandler.post(updateThread);progressBar2.setVisibility(View.VISIBLE);running = true;}}class ProgressBarOnClickListener1 implements OnClickListener {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubupdateBarHandler.removeCallbacks(updateThread);progressBar2.setVisibility(View.GONE);running = false;}}// 使用匿名内部类来复写Handler当中的handlerMessage()方法// 这个handler是需要反复执行的,直到消息队列中没有Message为止。// 执行过程中把进度条就刷新了。Handler updateBarHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {System.out.println("----------start handle");progressBar.setProgress(msg.arg1);updateBarHandler.post(updateThread); // 将要执行的线程放入到队列当中}};private void runTimer(){final TextView timeView = (TextView)findViewById(R.id. time_view);final Handler handler = new Handler(); handler.post( new Runnable() {@Override  public void run() {int hours = seconds/ 3600;int minutes = ( seconds% 3600)/ 60;int secs = seconds% 60; String time = String. format( "%d:%02d:%02d",hours,minutes,secs);timeView.setText(time);if( running){seconds++;}handler.postDelayed( this, 1000);}});}// 线程类,该类使用匿名内部类的方式进行声明Runnable updateThread = new Runnable() {int i = 0;public void run() {// TODO Auto-generated method stubSystem.out.println("----------Begin Thread");i += 1;// 得到一个消息对象,Message类是android系统提供的Message msg = updateBarHandler.obtainMessage();// 将Message对象的arg1参数的值设置为imsg.arg1 = i; // 用arg1、arg2这两个成员变量传递消息,优点是系统性能消耗较少try {Thread.sleep(100); // 让当前线程休眠1000毫秒} catch (InterruptedException ex) {ex.printStackTrace();}// 将Message对象加入到消息队列当中,等下次looper调用消息队列时,使用这个message显示进度条// 或者说,把增加了10%的进度信息Message放到updateBarHandler的队列中。if (i < 101){updateBarHandler.sendMessage(msg);}// 如果i的值等于100if (i == 100) {// 将线程对象从队列中移除updateBarHandler.removeCallbacks(updateThread);}}};
}

本人只是个小白,代码可能存在一些细节问题,但是可以跑就很满意了,此代码针对《Android移动应用开发使用教程》8.5.2题目三完成

安卓移动开发——用AsyncTask来实现计时器和进度条相关推荐

  1. android下载通知栏,Android开发中实现下载文件通知栏显示进度条

    android开发中实现下载文件通知栏显示进度条. 1.使用asynctask异步任务实现,调用publishprogress()方法刷新进度来实现(已优化) public class myasync ...

  2. android仿微信图片上传进度,Android开发之模仿微信打开网页的进度条效果(高仿)...

    一,为什么说是真正的高仿? 阐述这个问题前,先说下之前网上的,各位可以复制这段字,去百度一下  "仿微信打开网页的进度条效果",你会看到有很多类似的文章,不过他们有个共同点,就是实 ...

  3. android仿微信 进度条,Android开发之模仿微信打开网页的进度条效果(高仿)

    一,为什么说是真正的高仿? 阐述这个问题前,先说下之前网上的,各位可以复制这段字,去百度一下  "仿微信打开网页的进度条效果" ,你会看到有很多类似的文章,不过他们有个共同点,就是 ...

  4. android如何暂停倒计时,在Android中暂停和恢复倒计时器和进度条?

    我正在制作一个简单的应用程序,它使用倒计时器,循环进度条和3个按钮启动,暂停和恢复 . 我想要做的是当特定活动开始时我按暂停它存储定时器的时间暂停并从那一点开始恢复 . 但问题是倒计时器没有停止,所以 ...

  5. uni-app中自定义图表(canvas实现chart图表)开发篇(1)-圆环带进度条

    经常开发中,会遇到各种各样图表,这时大家普遍会想到去找插件.uniapp中常用的有uchart.js和echart.js,这对图表要求不高的项目来说,是很便捷的.但有时会遇到一些定制图表,加上UI的美 ...

  6. JavaScript计时器制作进度条

    文章目录 前言 一.效果图 二.代码 1.html代码 2.css代码 3.script代码 总结 前言 学习了计时器函数的用法可以用来制作载入进度条,文章分为3部分代码:html.css.scrip ...

  7. [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以马上抓紧时间来这里更新博客.博主本来计划在Unity3 ...

  8. 游戏开发unity编辑器扩展知识系列:进度条显示EditorUtility.ProgressBar

    插眼: 总结:EditorUtility.ProgressBar为核心api 参考: https://blog.csdn.net/LIQIANGEASTSUN/article/details/4217 ...

  9. Windows 7 任务栏开发 之 进度条(Progress Bar)

    上一篇我们完成了"覆盖图标"(Overlay Icon)的相关开发,本篇我们将对进度条特性进行研究.在使用IE 下载文件时,任务栏图标会同步显示当前下载进度(如下图).那么在应用程 ...

最新文章

  1. ORACLE约束总结
  2. mysql 字符集和校对规则
  3. return 返回部分值
  4. spring boot 单元测试_spring-boot-plus1.2.0-RELEASE发布-快速打包-极速部署-在线演示
  5. Java定义字符串(2种方式)
  6. 单机按钮来图片轮播_原生js如何实现轮播图效果?
  7. 红米Redmi品牌独立后首发新品 雷军:『友商就不要用性价比这个词了』...
  8. 【模式识别】信号检测实验及MATLAB仿真
  9. 卸载wps后安装office图标异常的问题
  10. Android以太网框架情景分析之NetworkManagementService和netd交互深入分析二
  11. 滴滴巨亏背后,打江山容易,守江山难?
  12. OC Extension Font(字体宏定义)
  13. 【罗塞塔石碑】—My Lover(One.iso)
  14. (转)QQ在线客服代码
  15. mysql毕业生信息管理系统,本科毕业设计信息管理系统的设计(Struts,MySQL)
  16. 相机拍摄照度均匀的画面,图像四周存在暗角的原因
  17. Windows 开发之VC++垃圾清理程序软件
  18. 证券公司信息化3-经纪业务收入大概是个什么水平?一个普通投资者的开户过程是怎样的?
  19. 用 java 安装 mockserver_前端工程化-Mock Server:使用Node+json-server+mock.js搭建Mock Server...
  20. 路由Zebra 之socket通信机制

热门文章

  1. TeamViewer:“未就绪,请检查您的网络连接“
  2. bootstrap table 复选框获取选中某几行的数据 + 可翻页
  3. 计算机 和金融主要学什么,计算机和金融哪个更好?未来发展有什么区别?
  4. 控制系统Matlab仿真——校正
  5. iCabMobile更新后,Installous的Downloads不能用的解决方法
  6. 让人脑壳疼的STP是如何做到防止环路?-理论
  7. 湖北省2020计算机技能大赛,【2018省赛专题报道】计算机信息技术学院在2018年湖北省职业技能大赛“计算机网络与信息安全技术”赛项中获奖...
  8. 第三十六讲:神州无线AP胖AP模式配置与管理
  9. Java-JWT Utils
  10. 面试时算法为什么如此重要?高薪,外企,为什么迟迟没有进入?