前言

大家好,给大家带来AndroidStudio项目制作倒计时模块的概述,希望你们喜欢

项目难度

AndroidStudio项目制作倒计时模块的难度,不是很大,就是主要用了TimerTimerTask这两个,接着就是现实界面的一些基础效果。

设计界面

做个倒计时的界面就比较好想了,就如下界面控件

  • 填写倒计时时间
  • 获取倒计时时间
  • 显示倒计时
  • 开始计时
  • 停止计时

    就在自动创建的activity_main.xml中写入代码:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context="cn.edu.gdmec.android.counttime.MainActivity">
  9. <!--填写倒计时时间-->
  10. <EditText
  11. android:id="@+id/input"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:ems="10"/>
  15. <!--获取倒计时时间-->
  16. <Button
  17. android:id="@+id/get"
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"
  20. android:text="获取倒计时时间"/>
  21. <!--显示倒计时-->
  22. <TextView
  23. android:id="@+id/time"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. />
  27. <!--开始计时-->
  28. <Button
  29. android:id="@+id/starttime"
  30. android:layout_width="wrap_content"
  31. android:layout_height="wrap_content"
  32. android:text="开始计时"/>
  33. <!--停止计时-->
  34. <Button
  35. android:id="@+id/stoptime"
  36. android:layout_width="wrap_content"
  37. android:layout_height="wrap_content"
  38. android:text="停止计时"/>
  39. </LinearLayout>

实现功能需求

接下来我们需要在MainActivity.java中现实功能模块需求,主要来显示界面和获取按钮功能效果,代码如下:

  1. package cn.edu.gdmec.android.counttime;
  2. import android.os.Handler;
  3. import android.os.Message;
  4. import android.support.v7.app.AppCompatActivity;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.EditText;
  9. import android.widget.TextView;
  10. import java.util.Timer;
  11. import java.util.TimerTask;
  12. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  13. private EditText inputet;
  14. private Button get, startTime, stopTime;
  15. private TextView time;
  16. private int i = 0;
  17. private Timer timer = null;
  18. private TimerTask task = null;
  19. @Override
  20. protected void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.activity_main);
  23. initView();
  24. }
  25. private void initView() {
  26. inputet = findViewById(R.id.input);
  27. get = findViewById(R.id.get);
  28. startTime = findViewById(R.id.starttime);
  29. stopTime = findViewById(R.id.stoptime);
  30. time = findViewById(R.id.time);
  31. get.setOnClickListener(this);
  32. startTime.setOnClickListener(this);
  33. stopTime.setOnClickListener(this);
  34. }
  35. @Override
  36. public void onClick(View v) {
  37. switch (v.getId()) {
  38. case R.id.get:
  39. time.setText(inputet.getText().toString());
  40. i = Integer.parseInt(inputet.getText().toString());
  41. break;
  42. case R.id.starttime:
  43. startTime();
  44. break;
  45. case R.id.stoptime:
  46. stopTime();
  47. break;
  48. default:
  49. break;
  50. }
  51. }
  52. private Handler mHandler = new Handler() {
  53. public void handleMessage(Message msg) {
  54. time.setText(msg.arg1 + "");
  55. startTime();
  56. };
  57. };
  58. public void startTime() {
  59. timer = new Timer();
  60. task = new TimerTask() {
  61. @Override
  62. public void run() {
  63. if (i > 0) { //加入判断不能小于0
  64. i--;
  65. Message message = mHandler.obtainMessage();
  66. message.arg1 = i;
  67. mHandler.sendMessage(message);
  68. }
  69. }
  70. };
  71. timer.schedule(task, 1000);
  72. }
  73. public void stopTime(){
  74. timer.cancel();
  75. }
  76. }

心得重点

  1. //获取的按钮实现:
  2. time.setText(inputet.getText().toString());
  3. i = Integer.parseInt(inputet.getText().toString());
  4. //Handler的加入
  5. private Handler mHandler = new Handler() {
  6. public void handleMessage(Message msg) {
  7. time.setText(msg.arg1 + "");
  8. startTime();
  9. };
  10. };
  11. //倒计时主要核心
  12. public void startTime() {
  13. timer = new Timer();
  14. task = new TimerTask() {
  15. @Override
  16. public void run() {
  17. if (i > 0) { //加入判断不能小于0
  18. i--;
  19. Message message = mHandler.obtainMessage();
  20. message.arg1 = i;
  21. mHandler.sendMessage(message);
  22. }
  23. }
  24. };
  25. timer.schedule(task, 1000);
  26. }

总结

  • 本文讲了AndroidStudio项目制作倒计时模块,如果您还有更好地理解,欢迎沟通
  • 定位:分享 Android&Java知识点,有兴趣可以继续关注

AndroidStudio项目制作倒计时模块的更多相关文章

  1. JavaWeb-SpringBoot(抖音)_一、抖音项目制作

    JavaWeb-SpringBoot(抖音)_一.抖音项目制作 传送门 JavaWeb-SpringBoot(抖音)_二.服务器间通讯 传送门 JavaWeb-SpringBoot(抖音)_三.抖音项 ...

  2. AndroidStudio项目提交(更新)到github最详细步骤

    在使用studio开发的项目过程中有时候我们想将项目发布到github上,以前都是用一种比较麻烦的方式(cmd)进行提交,最近发现studio其实是自带这种功能的,终于可以摆脱命令行了. 因为自己也没 ...

  3. AndroidStudio项目提交(更新)到github最具体步骤

    在使用studio开发的项目过程中有时候我们想将项目公布到github上.曾经都是用一种比較麻烦的方式(cmd)进行提交.近期发现studio事实上是自带这样的功能的,最终能够摆脱命令行了. 由于自己 ...

  4. AndroidStudio项目提交到github最详细步骤

    在使用studio开发的项目过程中有时候我们想将项目发布到github上,以前都是用一种比较麻烦的方式(cmd)进行提交,最近发现studio其实是自带这种功能的,终于可以摆脱命令行了. 因为自己也没 ...

  5. AndroidStudio项目提交到github最详细步骤【转】

    感谢大佬:https://www.cnblogs.com/imqsl/p/6763133.html 在使用studio开发的项目过程中有时候我们想将项目发布到github上,以前都是用一种比较麻烦的方 ...

  6. 基于dubbo构建分布式项目与服务模块

      关于分布式服务架构的背景和需求可查阅http://dubbo.io/.不同于传统的单工程项目,本文主要学习如何通过maven和dubbo将构建分布项目以及服务模块,下面直接开始. 创建项目以及模块 ...

  7. Go项目结构和模块导入

    Go项目结构和模块导入 golang项目结构与其他语言类似,但是仍然有一些需要注意的地方. 项目结构 环境配置 go 命令依赖一个重要的环境变量:$GOPATH,它表示GO项目的路径,如下设置 exp ...

  8. Windows下AndroidStudio 中使用Git(AndroidStudio项目于GitHub关联)

    前提条件 : 1. 安装 Git 客户端 下载链接 2. 有 GitHub 账号 (假设你已经有了一些git基础, 如果还一点都不会, 请去找其他加成学习) AndroidStudio项目发布到Git ...

  9. Androidstudio项目分享到Git@OSC托管

    Androidstudio项目分享到Git@OSC托管. 一.在OSC创建仓库 例如,创建一个AndroidStudy仓库,创建步骤如下: 输入仓库名称 点击创建按钮,就可以完成仓库的创建,如下图所示 ...

随机推荐

  1. push() 方法将一个或多个元素添加到数组的末尾,并返回新数组的长度

    var numbers = [1, 2, 3]; numbers.push(4); console.log(numbers); // [1, 2, 3, 4] numbers.push(5, 6, 7 ...

  2. html 中使用 iconfont、fontAwesome

    在HTML中尽量使用iconfont 替代图片有很多好处,而且方便,可以设置大小.颜色 等 可以用于字体的设置. 一.使用iconfont 1.打开iconfont 官网 iconfont.cn. 2 ...

  3. BlockTrain网络

    [BlockTrain网络] 1.每个节点都参与全⽹络的路由功能,同时也可能包含其他功能.每个节点都参与验证并传播交易及区块信息,发现并维持与对等节点的连接.在图6-1所⽰的全节点⽤例中,名为“⽹络路 ...

  4. extentReport生成测试报告

    之前在使用extentReport生成测试报告的时候,没有加载到相关的css,经检查为下面两个文件没有正确加载 后改变配置,加载本地的css和js文件,目前测试报告正确显示 1.创建TestNg的Re ...

  5. vue上线后,背景图片路径错误

    build 下的utils.js中添加配置 if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, public ...

  6. [leetcode]244. Shortest Word Distance II最短单词距离(允许连环call)

    Design a class which receives a list of words in the constructor, and implements a method that takes ...

  7. [leetcode]8. String to Integer (atoi)字符串转整数

    Implement atoi which converts a string to an integer. The function first discards as many whitespace ...

  8. 201621123002《Java程序设计》第七周学习总结

    1. 本周学习总结 1.1 思维导图:Java图形界面总结 2.书面作业 1. GUI中的事件处理 1.1 写出事件处理模型中最重要的几个关键词. 事件源,事件处理方法,事件监听器 事件源(Event ...

  9. [Python] 怎么把HTML的报告转换为图片,利用无头浏览器

    How to convert HTML Report to picture format in Email? So that we can see the automation report also ...

  10. 【git】仓库目录下文件不加入版本控制

    如果文件未做过提交操作,在文件所在目录或上级目录新建.gitignore文本文件,将文件的相对路径写入,再将该文本文件提交,则目标文件将被git忽略. 补一个gitignore文件书写规范 2.至于已 ...