{"id":180,"date":"2017-02-07T04:59:40","date_gmt":"2017-02-07T04:59:40","guid":{"rendered":"http:\/\/abhiandroid.com\/createandroidapp\/?page_id=180"},"modified":"2019-06-14T09:58:55","modified_gmt":"2019-06-14T09:58:55","slug":"create-countdown-timer-app","status":"publish","type":"page","link":"https:\/\/abhiandroid.com\/createandroidapp\/create-countdown-timer-app","title":{"rendered":"How To Create CountDown Timer App In Android Studio: Step By Step Guide"},"content":{"rendered":"<p>CountDown Timer App is about setting a time that moves in reverse like it shows the time left in upcoming\u00a0event. Likewise here we are making an Android App in context to CRICKET WORLD CUP which will start in 2019. So let&#8217;s begin App creation step by step towards it completion.<\/p>\n<p>In this CountDown Timer App tutorial\u00a0we are going to use multiple <a href=\"\/ui\/\">Android UI<\/a> components to design its interface in Android Studio.<\/p>\n<p><strong>Topics Used\u00a0For Creating CountDown Timer App &#8211;\u00a0<\/strong>Before following the below steps it is recommended you check out TextView, Relative Layout &amp;\u00a0Linear Layout topics. Also go through <a href=\"\/java\/\">JAVA OOPS<\/a> concept once.<\/p>\n<hr \/>\n<h4><strong>How To Create CountDown Timer App In Android Studio:<\/strong><\/h4>\n<p>Below you can download code, see final output and step by step explanation of CountDown Timer App in Android Studio.<\/p>\n<p style=\"text-align: center;\"><a class=\"download\" href=\"http:\/\/www.mediafire.com\/file\/htychz4g88637qj\/CountDown+App.zip\" target=\"_blank\" rel=\"nofollow\">Download Code<\/a><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-185\" src=\"\/createandroidapp\/wp-content\/uploads\/2017\/02\/CountDown-App-In-Android-Studio.png\" alt=\"CountDown App In Android Studio\" width=\"282\" height=\"572\" srcset=\"https:\/\/abhiandroid.com\/createandroidapp\/wp-content\/uploads\/2017\/02\/CountDown-App-In-Android-Studio.png 282w, https:\/\/abhiandroid.com\/createandroidapp\/wp-content\/uploads\/2017\/02\/CountDown-App-In-Android-Studio-148x300.png 148w\" sizes=\"auto, (max-width: 282px) 100vw, 282px\" \/><\/p>\n<p><span style=\"color: #008000;\"><strong>Step 1:<\/strong><\/span> Firstly get the android studio downloaded in your system, then open it.<\/p>\n<p><span style=\"color: #008000;\"><strong>Step 2:<\/strong><\/span> Create a new project and name it CountDownTimer.<\/p>\n<p><span style=\"color: #008000;\"><strong>Step 3:<\/strong><\/span> Open<strong> res -&gt; layout -&gt; activity_main.xml (or) main.xml<\/strong>. Here we are going to create the application interface like add layouts(linearlayout &amp; relativelayout), TextView. Carefully analyze the code as it&#8217;s a bit complicated, we used Linearlayout for displaying each part of CountDown Timer(days, hours, minutes , seconds).<\/p>\n<p><strong>The complete interface code of activity_main.xml:<\/strong><\/p>\n<pre>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;RelativeLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\r\n    xmlns:tools=\"http:\/\/schemas.android.com\/tools\"\r\n    android:id=\"@+id\/activity_main\"\r\n    android:layout_width=\"match_parent\"\r\n    android:layout_height=\"match_parent\"\r\n    android:paddingBottom=\"@dimen\/activity_vertical_margin\"\r\n    android:paddingLeft=\"@dimen\/activity_horizontal_margin\"\r\n    android:paddingRight=\"@dimen\/activity_horizontal_margin\"\r\n    android:paddingTop=\"@dimen\/activity_vertical_margin\"\r\n    android:background=\"@drawable\/backimage\"\r\n    tools:context=\"com.example.countdown.MainActivity\"&gt;\r\n\r\n    &lt;TextView\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:text=\"@string\/counter\"\r\n        android:textSize=\"30sp\"\r\n        android:textColor=\"#ffeeee\"\r\n        android:textStyle=\"bold|italic\"\r\n        android:layout_above=\"@+id\/relativeLayout\"\r\n        android:layout_centerHorizontal=\"true\"\r\n        android:id=\"@+id\/textViewheader1\" \/&gt;\r\n\r\n\r\n    &lt;RelativeLayout\r\n        android:layout_width=\"match_parent\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:layout_centerVertical=\"true\"\r\n        android:layout_centerHorizontal=\"true\"\r\n        android:id=\"@+id\/relativeLayout\"&gt;\r\n\r\n        &lt;LinearLayout\r\n            android:id=\"@+id\/LinearLayout\"\r\n            android:layout_width=\"wrap_content\"\r\n            android:layout_height=\"wrap_content\"\r\n            android:gravity=\"center\"\r\n            android:orientation=\"horizontal\"&gt;\r\n\r\n            &lt;TextView\r\n                android:id=\"@+id\/tveventStart\"\r\n                android:layout_width=\"wrap_content\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:paddingLeft=\"50sp\"\r\n                android:gravity=\"center\"\r\n                android:singleLine=\"true\"\r\n                android:text=\"@string\/worldcup_2k19\"\r\n                android:textColor=\"#fff\"\r\n                android:textSize=\"24sp\"\r\n                android:textStyle=\"bold\"\r\n                android:visibility=\"gone\" \/&gt;\r\n            &lt;LinearLayout\r\n                android:id=\"@+id\/LinearLayout1\"\r\n                android:layout_width=\"wrap_content\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:layout_weight=\"1\"\r\n                android:background=\"@drawable\/counter\"\r\n                android:gravity=\"center\"\r\n                android:orientation=\"vertical\" &gt;\r\n\r\n                &lt;TextView\r\n                    android:id=\"@+id\/txtDay\"\r\n                    android:layout_width=\"fill_parent\"\r\n                    android:layout_height=\"wrap_content\"\r\n                    android:layout_weight=\"3\"\r\n                    android:gravity=\"center\"\r\n                    android:textAppearance=\"?android:attr\/textAppearanceLarge\"\r\n                    android:textColor=\"#4a0000\"\r\n                    android:textSize=\"35sp\"\r\n                    android:textStyle=\"bold\" \/&gt;\r\n\r\n                &lt;TextView\r\n                    android:id=\"@+id\/txt_Day\"\r\n                    android:layout_width=\"fill_parent\"\r\n                    android:layout_height=\"wrap_content\"\r\n                    android:layout_weight=\"1\"\r\n                    android:gravity=\"center_horizontal\"\r\n                    android:text=\"@string\/days\"\r\n                    android:textAppearance=\"?android:attr\/textAppearanceSmall\"\r\n                    android:textColor=\"#fff\"\r\n                    android:textStyle=\"bold\" \/&gt;\r\n            &lt;\/LinearLayout&gt;\r\n\r\n            &lt;LinearLayout\r\n                android:id=\"@+id\/LinearLayout2\"\r\n                android:layout_width=\"wrap_content\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:layout_weight=\"1\"\r\n                android:background=\"@drawable\/counter\"\r\n                android:gravity=\"center\"\r\n                android:orientation=\"vertical\" &gt;\r\n\r\n                &lt;TextView\r\n                    android:id=\"@+id\/txtHour\"\r\n                    android:layout_width=\"fill_parent\"\r\n                    android:layout_height=\"wrap_content\"\r\n                    android:layout_weight=\"3\"\r\n                    android:gravity=\"center\"\r\n                    android:textAppearance=\"?android:attr\/textAppearanceLarge\"\r\n                    android:textColor=\"#4a0000\"\r\n                    android:textSize=\"35sp\"\r\n                    android:textStyle=\"bold\" \/&gt;\r\n\r\n                &lt;TextView\r\n                    android:id=\"@+id\/txt_Hour\"\r\n                    android:layout_width=\"fill_parent\"\r\n                    android:layout_height=\"wrap_content\"\r\n                    android:layout_weight=\"1\"\r\n                    android:gravity=\"center_horizontal\"\r\n                    android:text=\"@string\/hours\"\r\n                    android:textAppearance=\"?android:attr\/textAppearanceSmall\"\r\n                    android:textColor=\"#fff\"\r\n                    android:textStyle=\"bold\" \/&gt;\r\n            &lt;\/LinearLayout&gt;\r\n\r\n            &lt;LinearLayout\r\n                android:id=\"@+id\/LinearLayout3\"\r\n                android:layout_width=\"wrap_content\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:layout_weight=\"1\"\r\n                android:background=\"@drawable\/counter\"\r\n                android:gravity=\"center\"\r\n                android:orientation=\"vertical\" &gt;\r\n\r\n                &lt;TextView\r\n                    android:id=\"@+id\/txtMinute\"\r\n                    android:layout_width=\"fill_parent\"\r\n                    android:layout_height=\"wrap_content\"\r\n                    android:layout_weight=\"3\"\r\n                    android:gravity=\"center\"\r\n                    android:textAppearance=\"?android:attr\/textAppearanceLarge\"\r\n                    android:textColor=\"#4a0000\"\r\n                    android:textSize=\"35sp\"\r\n                    android:textStyle=\"bold\" \/&gt;\r\n\r\n                &lt;TextView\r\n                    android:id=\"@+id\/txt_Minute\"\r\n                    android:layout_width=\"fill_parent\"\r\n                    android:layout_height=\"wrap_content\"\r\n                    android:layout_weight=\"1\"\r\n                    android:gravity=\"center_horizontal\"\r\n                    android:text=\"@string\/minutes\"\r\n                    android:textAppearance=\"?android:attr\/textAppearanceSmall\"\r\n                    android:textColor=\"#fff\"\r\n                    android:textStyle=\"bold\" \/&gt;\r\n            &lt;\/LinearLayout&gt;\r\n\r\n            &lt;LinearLayout\r\n                android:id=\"@+id\/LinearLayout4\"\r\n                android:layout_width=\"wrap_content\"\r\n                android:layout_height=\"wrap_content\"\r\n                android:layout_weight=\"1\"\r\n                android:background=\"@drawable\/counter\"\r\n                android:gravity=\"center\"\r\n                android:orientation=\"vertical\" &gt;\r\n\r\n                &lt;TextView\r\n                    android:id=\"@+id\/txtSecond\"\r\n                    android:layout_width=\"fill_parent\"\r\n                    android:layout_height=\"wrap_content\"\r\n                    android:layout_weight=\"3\"\r\n                    android:gravity=\"center\"\r\n                    android:textAppearance=\"?android:attr\/textAppearanceLarge\"\r\n                    android:textColor=\"#4a0000\"\r\n                    android:textSize=\"35sp\"\r\n                    android:textStyle=\"bold\" \/&gt;\r\n\r\n                &lt;TextView\r\n                    android:id=\"@+id\/txt_Second\"\r\n                    android:layout_width=\"fill_parent\"\r\n                    android:layout_height=\"wrap_content\"\r\n                    android:layout_weight=\"1\"\r\n                    android:gravity=\"center_horizontal\"\r\n                    android:text=\"@string\/seconds\"\r\n                    android:textAppearance=\"?android:attr\/textAppearanceSmall\"\r\n                    android:textColor=\"#fff\"\r\n                    android:textStyle=\"bold\" \/&gt;\r\n            &lt;\/LinearLayout&gt;\r\n        &lt;\/LinearLayout&gt;\r\n    &lt;\/RelativeLayout&gt;\r\n\r\n    &lt;TextView\r\n        android:layout_width=\"wrap_content\"\r\n        android:layout_height=\"wrap_content\"\r\n        android:text=\"@string\/countleft\"\r\n        android:layout_below=\"@+id\/relativeLayout\"\r\n        android:layout_centerHorizontal=\"true\"\r\n        android:id=\"@+id\/textViewheader2\"\r\n        android:textSize=\"35sp\"\r\n        android:textStyle=\"bold|italic\"\r\n        android:textColor=\"@android:color\/background_dark\" \/&gt;\r\n    \r\n&lt;\/RelativeLayout&gt;\r\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-189\" src=\"\/createandroidapp\/wp-content\/uploads\/2017\/02\/CountDown-App-UI-In-Android-Studio.png\" alt=\"CountDown App UI In Android Studio\" width=\"199\" height=\"337\" srcset=\"https:\/\/abhiandroid.com\/createandroidapp\/wp-content\/uploads\/2017\/02\/CountDown-App-UI-In-Android-Studio.png 199w, https:\/\/abhiandroid.com\/createandroidapp\/wp-content\/uploads\/2017\/02\/CountDown-App-UI-In-Android-Studio-177x300.png 177w\" sizes=\"auto, (max-width: 199px) 100vw, 199px\" \/><\/p>\n<p><span style=\"color: #008000;\"><strong>Step 4:<\/strong> <\/span> Open<strong> src -&gt; package -&gt; MainActivity.java<\/strong>. The interface part of the application is over, let&#8217;s focus on adding functionality to the application.<br \/>\nIn this app we use System date and the upcoming event date in our case it&#8217;s \u00a030-may-2019(World Cup 2k19). Nextly we will subtract the both \u00a0dates and get the time in milliseconds further we have some arithmetic operations over it to get the left time till the event arrival.<\/p>\n<p>You also see that we use handler in this code to schedule message and runnable in future at some point and scheduling is accomplished by various methods but we used postDelayed(runnable, long).<\/p>\n<pre>package com.example.countdown;\r\n\r\nimport android.support.v7.app.AppCompatActivity;\r\nimport android.os.Bundle;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Date;\r\nimport android.os.Handler;\r\nimport android.view.View;\r\nimport android.widget.TextView;\r\n\r\npublic class MainActivity extends AppCompatActivity {\r\n\r\n    private TextView txtDay, txtHour, txtMinute, txtSecond;\r\n    private TextView tvEventStart;\r\n    private Handler handler;\r\n    private Runnable runnable;\r\n\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n\r\n        txtDay = (TextView) findViewById(R.id.txtDay);\r\n        txtHour = (TextView) findViewById(R.id.txtHour);\r\n        txtMinute = (TextView) findViewById(R.id.txtMinute);\r\n        txtSecond = (TextView) findViewById(R.id.txtSecond);\r\n        tvEventStart = (TextView) findViewById(R.id.tveventStart);\r\n\r\n        countDownStart();\r\n    }\r\n\r\n    public void countDownStart() {\r\n        handler = new Handler();\r\n        runnable = new Runnable() {\r\n            @Override\r\n            public void run() {\r\n                handler.postDelayed(this, 1000);\r\n                try {\r\n                    SimpleDateFormat dateFormat = new SimpleDateFormat(\r\n                            \"yyyy-MM-dd\");\r\n                    \/\/ Please here set your event date\/\/YYYY-MM-DD\r\n                    Date futureDate = dateFormat.parse(\"2019-5-30\");\r\n                    Date currentDate = new Date();\r\n                    if (!currentDate.after(futureDate)) {\r\n                        long diff = futureDate.getTime()\r\n                                - currentDate.getTime();\r\n                        long days = diff \/ (24 * 60 * 60 * 1000);\r\n                        diff -= days * (24 * 60 * 60 * 1000);\r\n                        long hours = diff \/ (60 * 60 * 1000);\r\n                        diff -= hours * (60 * 60 * 1000);\r\n                        long minutes = diff \/ (60 * 1000);\r\n                        diff -= minutes * (60 * 1000);\r\n                        long seconds = diff \/ 1000;\r\n                        txtDay.setText(\"\" + String.format(\"%02d\", days));\r\n                        txtHour.setText(\"\" + String.format(\"%02d\", hours));\r\n                        txtMinute.setText(\"\"\r\n                                + String.format(\"%02d\", minutes));\r\n                        txtSecond.setText(\"\"\r\n                                + String.format(\"%02d\", seconds));\r\n                    } else {\r\n                        tvEventStart.setVisibility(View.VISIBLE);\r\n                        tvEventStart.setText(\"The event started!\");\r\n                        textViewGone();\r\n                    }\r\n                } catch (Exception e) {\r\n                    e.printStackTrace();\r\n                }\r\n            }\r\n        };\r\n        handler.postDelayed(runnable, 1 * 1000);\r\n    }\r\n\r\n    public void textViewGone() {\r\n        findViewById(R.id.LinearLayout1).setVisibility(View.GONE);\r\n        findViewById(R.id.LinearLayout2).setVisibility(View.GONE);\r\n        findViewById(R.id.LinearLayout3).setVisibility(View.GONE);\r\n        findViewById(R.id.LinearLayout4).setVisibility(View.GONE);\r\n        findViewById(R.id.textViewheader1).setVisibility(View.GONE);\r\n        findViewById(R.id.textViewheader2).setVisibility(View.GONE);\r\n    }\r\n}\r\n<\/pre>\n<p><span style=\"color: #008000;\"><strong>OUTPUT:<\/strong><\/span><br \/>\nNow run the App and you will see\u00a0the CountDown App. Add any upcoming event in the app and use its functionality.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CountDown Timer App is about setting a time that moves in reverse like it shows the time left in upcoming\u00a0event. Likewise here we are making an Android App in context to CRICKET WORLD CUP which will start in 2019. So let&#8217;s begin App creation step by step towards it completion. In this CountDown Timer App &hellip; <a href=\"https:\/\/abhiandroid.com\/createandroidapp\/create-countdown-timer-app\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">How To Create CountDown Timer App In Android Studio: Step By Step Guide<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"home.php","meta":{"footnotes":""},"class_list":["post-180","page","type-page","status-publish","hentry"],"psp_head":"<title>How To Create CountDown Timer App In Android Studio: Step By Step Guide \u2013 Create Android App<\/title>\r\n<meta name=\"description\" content=\"CountDown Timer App is about setting a time that moves in reverse like it shows the time left in upcoming event.\" \/>\r\n<meta name=\"robots\" content=\"index,follow\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/abhiandroid.com\/createandroidapp\/create-countdown-timer-app\" \/>\r\n","_links":{"self":[{"href":"https:\/\/abhiandroid.com\/createandroidapp\/wp-json\/wp\/v2\/pages\/180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/abhiandroid.com\/createandroidapp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/abhiandroid.com\/createandroidapp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/abhiandroid.com\/createandroidapp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/abhiandroid.com\/createandroidapp\/wp-json\/wp\/v2\/comments?post=180"}],"version-history":[{"count":3,"href":"https:\/\/abhiandroid.com\/createandroidapp\/wp-json\/wp\/v2\/pages\/180\/revisions"}],"predecessor-version":[{"id":311,"href":"https:\/\/abhiandroid.com\/createandroidapp\/wp-json\/wp\/v2\/pages\/180\/revisions\/311"}],"wp:attachment":[{"href":"https:\/\/abhiandroid.com\/createandroidapp\/wp-json\/wp\/v2\/media?parent=180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}