2017-2018-20172311 暑期编程作业:实现一个简单倒计时APP

  • 写在前面:暑假的时候就单纯的想要设计一个倒计时软件,然后就通过查阅资料等学了一些,包括实现倒计时功能及显示;背景音乐的添加;图标的设置;界面的优化设计;从Android studio中把设计的APP提取出来。说实话这个APP确实是有点太简单了,但是既然做了,就把做的过程和结果简单记录一下吧(捂脸笑.gif),虽然也忘得差不多了(捂脸笑.gif)。

作品展示:

整体展示:

细节展示:

  • app原始图标如下:

  • app设计图标如下(get from internet):

  • app原始背景:

嗯!空白

  • app的设计背景如下(get from internet):

  • app的背景音乐信息:

    歌曲名:Shape of You (伴奏)

    歌手名:Zoom Karaoke

    专辑名:Zoom Karaoke Pop Chart Picks 2017 - Part 1

  • 修改后的res结构如下:

  • app名称和图标的修改如下:

  • layout的设计如下:

制作之前的准备工作:

  • 1.做一个什么样的app呢?

    王老师让我们暑期自己设计实现一个app,于是,做一个游戏?一个词典?一个音乐软件?一个交易平台?······最后,还是从最简单的开始吧。计算器上学期实现了,就做一个简单的计时器吧!
  • 2.倒计时功能如何实现啊?

    上网查阅计时器实现的整体思路并进行深入学习。
  • 3.app名字怎么改?app图标怎么设置?app背景怎么设置?app音乐怎么导入和使用?

    前三个问题非常感谢王志伟同学的帮助,hahahaha!第四个问题非常感谢谭鑫同学的帮助,hahahaha!
  • 4.Android studio里设计的app如何提取出来?

    查阅资料Android Studio 生成正式签名apk(app-release.apk)的两种方式,同时也非常感谢谭鑫同学的协助,hahahaha!

制作过程

主功能的实现:

这个app的主要功能就是实现背景音乐的播放和倒计时的过程显示(捂脸笑.gif),通过在MainActivity.java代码中的注释表达一下自己的思路。MainActivity.java代码如下:

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
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 Activity implements View.OnClickListener { private EditText inputet;
private Button getTime,startTime,stopTime;
private TextView time;
private double 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(); //启用initView()方法 //播放音乐文件shape
MediaPlayer mediaplayer = MediaPlayer.create(this,R.raw.shape);
mediaplayer.start(); } //initView()方法
private void initView(){ //建立文本框和按钮引用
inputet=(EditText) findViewById(R.id.inputtime);
getTime=(Button) findViewById(R.id.gettime);
startTime=(Button) findViewById(R.id.starttime);
stopTime=(Button) findViewById(R.id.stoptime);
time=(TextView) findViewById(R.id.time1); //设置监听事件
getTime.setOnClickListener(this);
startTime.setOnClickListener(this);
stopTime.setOnClickListener(this);
} //设置按钮之后执行的操作
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.gettime:
time.setText(inputet.getText().toString());//将时间显示在文本框里
i=Double.valueOf(inputet.getText().toString());
break;
case R.id.starttime:
startTime(); break;
case R.id.stoptime:
stopTime(); break;
} } //创建Handler对象,实现计时功能
private Handler mHandler = new Handler(){
public void handleMessage(Message msg){
time.setText(msg.obj+"");
startTime();
}; }; //开始计时方法
public void startTime(){
timer=new Timer();
task=new TimerTask() {
@Override
//实现数字减少与时间减少相对应
public void run() {
i=(double)Math.round( (i-0.1)*10)/10;
Message message=mHandler.obtainMessage();
message.obj=i;
mHandler.sendMessage(message);
}
};
timer.schedule(task,100);
} //停止计时方法
public void stopTime(){
timer.cancel(); }
}

后面想到待实现的一些功能:

现在看来,这个app能够拓展的地方还是挺多的

  • app的介绍以及使用功能
  • 添加正计时功能的
  • 添加间隔计时报时功能,比如每隔一定时间报一次时
  • 添加背景音乐选择以及是否播放功能 、
  • 添加开启多组计时功能

反思与总结

  • 虽然这个APP很简单(捂脸笑.jpg),但是通过自己的学习也让我受益匪浅。我学到了如何创建一个app项目,如何设计app的图标和名字,如何添加背景图片和背景音乐以及如何将一些在IDEA里实现的代码在Android studio里使用等等,这些很基础,也很重要!当我把这个app安装包传到手机上安装并运行成功的时候!我真的非常开心!这是我的第一个专属app啊!但是,这次暑期作业的完成质量确实不高,主要是因为自己当时对自己提出的要求有点低了,而且在app开发的功能设计上也存在很大不足!希望在以后的学习中去努力提高自己,开发出更好的软件来吧!

参考文献

2017-2018-20172311 暑期编程作业:APP的更多相关文章

  1. # 2017-2018-20172309 暑期编程作业:APP

    2017-2018-20172309 暑期编程作业:基于有道词典API的翻译软件的实现. 写在前面:这个博客可以说是拖了很久了.因为做这个APP已经很久了,很多东西都已经忘记了,所以一直都懒得写.但是 ...

  2. java数据结构和算法编程作业系列篇-数组

    /** * 编程作业 2.1 向highArray.java程序(清单2.3)的HighArray类添加一个名为getMax()的方法,它返回 数组中最大关键字的值,当数组为空时返回-1.向main( ...

  3. 20172321 20172333 2017-2018 暑假作业APP

    20172321 20172333 2017-2018 暑假作业APP 项目介绍 项目成员 吴恒佚 20172321 严域俊 20172333 项目简介 从理论上来说,这是一个贪吃蛇游戏. <贪 ...

  4. </2017><2018>

    >>> Blog 随笔原始文档及源代码 -> github: https://github.com/StackLike/Python_Note >>> 统计信 ...

  5. 【BUAA软工】结对编程作业

    项目 内容 课程:2020春季软件工程课程博客作业(罗杰,任健) 博客园班级链接 作业:BUAA软件工程结对编程项目作业 作业要求 课程目标 学习大规模软件开发的技巧与方法,锻炼开发能力 作业目标 完 ...

  6. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结

    Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...

  7. stanford coursera 机器学习编程作业 exercise 3(逻辑回归实现多分类问题)

    本作业使用逻辑回归(logistic regression)和神经网络(neural networks)识别手写的阿拉伯数字(0-9) 关于逻辑回归的一个编程练习,可参考:http://www.cnb ...

  8. (转)Android如何编程设置APP安装位置(外部存储或内部存储)?

    Beginning with API Level 8, you can allow your application to be installed on the external storage ( ...

  9. 10款无需编程的App DIY开发工具

    10款无需编程的App DIY开发工具 你有一个很棒的创意但不会编程怎么办?外包.合伙开发还是从零学编程?这里提供另外一种方式--使用无需编程的App  DIY开发工具.DIY开发工具不仅节省了开发时 ...

随机推荐

  1. python 位置参数和关键字参数 *args **kwargs

    #!/usr/bin/env pythondef foo(*args,**kwargs): print('args: {0}'.format(args)) print('kwargs {0}'.for ...

  2. sed 替换有单引号的行

    cat test.txt $config['useragent'] = 'Roundcube Webmail'; // Hide version number//$config['username_d ...

  3. windows服务初识

    参考网址1:http://www.vchome.net/dotnet/dotnetdocs/dotnet38.htm 参考网址2:http://zhidao.baidu.com/link?url=7- ...

  4. 【vue】vue生命周期解读 (流程+钩子函数)

    参考详细说明一波简书 (vue中钩子函数解读) 1.实例渲染流程 2.生命周期钩子函数比 钩子函数详解简书一 钩子函数详解简书二

  5. Django:表单字段如何在模板中用中文显示

    在处理中文显示的时候,刚开始接触django时,很容易弄混表单汉化和Admin后台汉化. 1.表单汉化:是针对用户的.用户浏览网页时,表单的名称如果是英文的,不够友好,所以需要显示为中文,虽然代码编写 ...

  6. 求Read Depth

    如何划窗统计测序数据的reads数(depth):https://blog.csdn.net/shenshenwu666/article/details/80936374 方法1,用samtools ...

  7. 20155327Exp2 后门原理与实践

    20155327Exp2 后门原理与实践 一.实验说明 任务一:使用netcat获取主机操作Shell,cron启动 (0.5分) 任务二:使用socat获取主机操作Shell, 任务计划启动 (0. ...

  8. JAVA-SPI机制-实现功能的热插拔

    一.序: 开发中经常遇到的一个需求是,处理不同种类的数据,但是完成的功能是相似的,功能随着传入类型的不同而变化 二.方案: 1.定义接口:定义一个接口,编写不同的实现类 (1)使用场景:完成功能相同, ...

  9. 【转载】D3D中的Texture应用示例

    原文:D3D中的texture应用示例 本文列举了Direct3D中各种纹理应用实现:黑暗贴图,发光贴图,漫反射映射贴图,细节纹理,纹理混合,有较详尽的注解.其中黑暗贴图,发光贴图,细节纹理都是采用多 ...

  10. 5289: [Hnoi2018]排列

    5289: [Hnoi2018]排列 链接 分析: 首先将题意转化一下:每个点向a[i]连一条边,构成了一个以0为根节点的树,要求选一个拓扑序,点x是拓扑序中的第i个,那么价值是i*w[x].让价值最 ...