首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AndroidStudio项目制作倒计时模块

AndroidStudio项目制作倒计时模块

作者头像
达达前端
发布于 2019-07-03 04:16:05
发布于 2019-07-03 04:16:05
73601
代码可运行
举报
文章被收录于专栏:达达前端达达前端
运行总次数:1
代码可运行

前言

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

项目难度

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

设计界面

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

  • 填写倒计时时间
  • 获取倒计时时间
  • 显示倒计时
  • 开始计时
  • 停止计时 就在自动创建的activity_main.xml中写入代码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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:orientation="vertical"
    tools:context="cn.edu.gdmec.android.counttime.MainActivity">
    <!--填写倒计时时间-->
    <EditText
        android:id="@+id/input"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"/>
    <!--获取倒计时时间-->
    <Button
        android:id="@+id/get"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取倒计时时间"/>
    <!--显示倒计时-->
    <TextView
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <!--开始计时-->
    <Button
        android:id="@+id/starttime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始计时"/>
    <!--停止计时-->
    <Button
        android:id="@+id/stoptime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="停止计时"/>
</LinearLayout>

实现功能需求

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.edu.gdmec.android.counttime;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private EditText inputet;
    private Button get, startTime, stopTime;
    private TextView time;
    private int i = 0;
    private Timer timer = null;
    private TimerTask task = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        inputet = findViewById(R.id.input);
        get = findViewById(R.id.get);
        startTime = findViewById(R.id.starttime);
        stopTime = findViewById(R.id.stoptime);
        time = findViewById(R.id.time);
        get.setOnClickListener(this);
        startTime.setOnClickListener(this);
        stopTime.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.get:
                time.setText(inputet.getText().toString());
                i = Integer.parseInt(inputet.getText().toString());
                break;
            case R.id.starttime:
                startTime();
                break;
            case R.id.stoptime:
                stopTime();
                break;
            default:
                break;
        }
    }

    private Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            time.setText(msg.arg1 + "");
            startTime();
        };
    };

    public void startTime() {
        timer = new Timer();
        task = new TimerTask() {

            @Override
            public void run() {
                if (i > 0) {   //加入判断不能小于0
                    i--;
                    Message message = mHandler.obtainMessage();
                    message.arg1 = i;
                    mHandler.sendMessage(message);
                }
            }
        };
        timer.schedule(task, 1000);
    }

    public void stopTime(){
        timer.cancel();
    }
}

心得重点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//获取的按钮实现:
time.setText(inputet.getText().toString());
i = Integer.parseInt(inputet.getText().toString());
//Handler的加入
private Handler mHandler = new Handler() {
        public void handleMessage(Message msg) {
            time.setText(msg.arg1 + "");
            startTime();
        };
    };
//倒计时主要核心
public void startTime() {
        timer = new Timer();
        task = new TimerTask() {

            @Override
            public void run() {
                if (i > 0) {   //加入判断不能小于0
                    i--;
                    Message message = mHandler.obtainMessage();
                    message.arg1 = i;
                    mHandler.sendMessage(message);
                }
            }
        };
        timer.schedule(task, 1000);
    }

总结

  • 本文讲了AndroidStudio项目制作倒计时模块,如果您还有更好地理解,欢迎沟通
  • 定位:分享 Android&Java知识点,有兴趣可以继续关注
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.04.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Portainer部署Docker容器实践
最近在使用rancher2.5.5部署Redis主从复制的时候,发现rancher会产生很多iptables的规则,这些规则导致我们在部署了rancher的机器上无法使用Redis的主从复制功能,因为我对rancher和k8s的了解也仅限于了解网络架构和使用,对底层并不深入,短期内无法解决这个网络冲突的问题;
汤青松
2021/04/13
2.3K0
vulfocus搭建
vulfocus是一个管理靶场的docker容器。做为一个学习网安,渗透的小白,不乏会碰到搭建练习靶场,以及一些漏洞环境来学习。比如dvwa、pikachu等等。搭建不仅费事费时,而且再次学习还要重新搭建或者搭建部分,简直是学习路上的绊脚石。 vulfocus管理着常用的靶场和漏洞,只需要动动手指点击鼠标,vulfocus就会自动从官网拉取环境,且依赖docker部署环境。当再次使用时,只需docker启动vulfocus,通过vulfocus启动即可,当然也可以使用docker启动,因为vulfocus也是安装的靶场或者漏洞环境也是docker容器。
cultureSun
2023/05/18
4.2K1
vulfocus搭建
Docker搭建漏洞靶场
链接:https://pan.baidu.com/s/1i8Gx9pcsLQWJxElwHPRaBw  提取码:hal7 
干掉芹菜
2022/11/19
1K0
Docker搭建漏洞靶场
打造漏洞攻防实验环境:CentOS 7上的VulFocus本地靶场构建
释然IT杂谈
2023/08/18
6730
打造漏洞攻防实验环境:CentOS 7上的VulFocus本地靶场构建
Docker轻量级可视化工具Portainer
https://hub.docker.com/r/6053537/portainer-ce
无敌小菜鸟
2022/04/13
8000
Docker轻量级可视化工具Portainer
使用 Docker 搭建 Seafile 私有云流程记录
自之前的那篇静态文章 “Docker 安装 Seafile 私有云记录” 丢失后就一直搁置,这之间因为各种原因在服务器和本地都来回重装了几次,那么今天就简单来聊下这个私有云的搭建流程,也当做个记录了(@一下催更本文的Ying酱/滑稽)
2Broear
2024/03/12
1.7K0
使用 Docker 搭建 Seafile 私有云流程记录
Docker可视化管理工具总结-推荐使用Portainer
对于初学docker的小白,一款好的可视化工具有助于快速掌握docker基本形态和概念,下面针对docker可视化工具做些总结
DevOps在路上
2023/06/23
1.2K0
Docker可视化管理工具总结-推荐使用Portainer
CTF本地靶场搭建——GZ:CTF安装
项目地址:https://gitcode.com/GZTimeWalker/GZCTF
zhouzhou的奇妙编程
2024/06/02
1K0
docker 套娃在CI中应用解析
docker里嵌套运行docker,本文讲解其在jenkins和gitlab-runner 中的调用流程
锅总
2024/06/12
2160
docker 套娃在CI中应用解析
Docker可视化界面(Consul+Shipyard+Swarm+Service Discover)部署记录
前面一篇说到了Docker管理工具-Swarm部署记录,基于这个环境,下面记录下Docker可视化界面部署过程: 1)下载相关惊喜 manager-node节点(182.48.115.237) [root@manager-node ~]# docker pull progrium/consul [root@manager-node ~]# docker pull rethinkdb [root@manager-node ~]# docker pull shipyard/shipyard [root@ma
洗尽了浮华
2018/01/23
9550
Docker可视化界面(Consul+Shipyard+Swarm+Service Discover)部署记录
Docker可视化面板——Portainer
1、下载汉化文件,解压出public文件夹 2、文件夹传输至系统root目录 3、然后按需执行以下命令
shutiaoya
2022/06/17
1.8K0
Docker可视化面板——Portainer
【Docker系列】Docker Swarm 集群 (swarm,可视化容器管理工具 Portainer)
Swarm 现在有三台 linux服务器。对应的公网Ip和主机名称 56.111.111.100 master 56.111.111.101 slave1 56.111.111.102 slave2 三台 分别需要安装 docker环境 安装docker 如果需要修改主机的名称,那修改 服务器的 主机名,命令: hostnamectl set-hostname 新的主机名 修改 三台主机的 docker.service 文件 vim /lib/systemd/system/docker.service
shutiaoya
2022/06/17
8750
【Docker系列】Docker Swarm 集群 (swarm,可视化容器管理工具 Portainer)
Ubuntu安装Weblate
This is the recommended method if you don’t want to concern yourself with further detail. This will create a separate Python environment for Weblate, possibly duplicating some of the Python libraries on the system.
iOSDevLog
2019/04/01
1.1K0
发现一款吊炸天的 Docker 图形化管理工具,必须推荐给你!
Portainer 是 Docker 的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm 集群和服务等集中管理和操作、登录用户管理和控制等功能。功能十分全面,基本能满足个人用户对容器管理的全部需求。
民工哥
2021/07/16
7690
发现一款吊炸天的 Docker 图形化管理工具,必须推荐给你!
【Docker】Docker学习记录: Shipyard+Swarm+Consul+Service Discover 搭建教程
网上乱七八糟的资料实在是太多了, 乱, 特别乱, 而看书呢, 我读了2本书, 一本叫做<<第一本 Docker 书>>, 另一本叫做<< Docker进阶与实战>> 在 服务发现这块讲的又不清不楚的, 坑死个人. 今天特意记录下, 并整理下来,以防自己哪天又忘了, 也给同在研究Docker 的朋友们一个安装教程. 我单位测试机一共四台, 各位可以起4个虚拟机对应, 假定分别是141,142,143,144. 都是 CentOS 6.x 系统. Step1. 升级 CentOS 内核到3.10版本以上 首先升
Rainbond开源
2018/05/31
8190
综合开源靶场搭建
Vulfocus是一个漏洞集成平台,可以通过平台添加多种类型的漏洞靶场,操作简单,易学易用。接下来小编将带领大家一同搭建一个简单的测试靶场环境。
安全小王子
2021/01/12
2.2K0
使用 docker-compose 快速安装Jenkins
当前 docker 版本:Docker version 18.09.0 当前 docker-compose 版本:docker-compose version 1.23.2
易墨
2019/01/03
5.7K5
FAST OS DOCKER可视化Docker管理
FAST OS DOCKER 界面直观、简洁,非常适合新手使用,方便大家轻松上手 docker部署运行各类有趣的容器应用,同时 FAST OS DOCKER 为防止服务器负载过高,进行了底层性能优化;其以服务器安全为基础,对其进行权限管理,因此安全性极高;为方便用户安装,集成了docker镜像,通过docker镜像进行启动。FAST OS DOCKER的后端语言是GO,前端框架是VUE。
院长技术
2021/03/11
1.4K0
如何用可视化工具,管理蘑菇博客中的微服务组件?
今天给小伙伴们带来的是管理蘑菇博客微服务组件,一款 Docker 可视化工具 Portainer 的安装和使用。
陌溪
2021/09/09
4910
如何用可视化工具,管理蘑菇博客中的微服务组件?
django 工作流例子
TWEET_APPROVER_EMAIL = 'someone@mydomain.com'
用户5760343
2022/05/14
4720
django 工作流例子
推荐阅读
相关推荐
使用Portainer部署Docker容器实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验