zoukankan      html  css  js  c++  java
  • 2017-2018-20172311 暑期编程作业:APP

    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开发的功能设计上也存在很大不足!希望在以后的学习中去努力提高自己,开发出更好的软件来吧!

    参考文献

  • 相关阅读:
    sencha touch 扩展篇之将sencha touch打包成安装程序(上)- 使用sencha cmd打包安装程序
    sencha touch 扩展篇之使用sass自定义主题样式 (下)通过css修改官方组件样式以及自定义图标
    一个不错的android组件的网站
    sencha touch 扩展篇之使用sass自定义主题样式 (上)使用官方的api修改主题样式
    sencha touch 入门系列 (九) sencha touch 布局layout
    面试题总结
    国外接活网站Elance, Freelancer和ScriptLance的介绍和对比
    sencha touch 入门系列 扩展篇之sencha touch 项目打包压缩
    Android Design Support Library——Navigation View
    设计模式——命令模式
  • 原文地址:https://www.cnblogs.com/zhaoxiaohai/p/10012982.html
Copyright © 2011-2022 走看看