- Chronometer
- Основные методы:
- Обратный отсчёт
- Последний отсчёт
- Руководство Android Chronometer
- 1- Android Chronometer
- 2- Chronometer Methods
- 3- Chronometer Events
- TODO
- 4- Example: Chronometer (Count up)
- 5- Example: Chronometer (Count down)
- 6- Example: Custom Format
- View more Tutorials:
- How to make a stopwatch android application with start, pause, stop, reset, laps showing in listview source code download.
- Android Create Stopwatch Example Tutorial in Android Studio.
- Click here to download Android Create Stopwatch Example Tutorial in Android Studio project with source code.
- Make a Chronometer application In Android Studio and Java
- Image assets
- Style.xml
- Colors.xml
- The custom button
Chronometer
Компонент Chronometer находился в разделе Date в старых версиях студии. Позволяет пользователю запускать и останавливать начальный отсчёт времени, а также задавать время запуска таймера.
Основные методы:
- start() — запускает отсчёт времени;
- stop() — останавливает отсчёт времени;
- setFormat() — задаёт формат отображения времени. По умолчанию используется формат «MM:SS» или «H:MM:SS». Можно задать свой формат, при этом в строке format первое встреченное «%s», будет заменено на «HH:MM». Например: «Time: %s» будет выводить время «Time: 01:30»
Класс Chronometer имеет интерфейс OnChronometerTickListener.
Поместите на экран активности компонент Chronometer и три кнопки Старт, Стоп, Сброс.
Напишем код для запуска, остановки и сброса секундомера. Весь код сводится обработке щелчков кнопки.
// Kotlin // Если этот код работает, его написал Александр Климов, // а если нет, то не знаю, кто его писал. package ru.alexanderklimov.as40k import android.os.Bundle import android.os.SystemClock import android.widget.Chronometer import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() < private lateinit var chronometer: Chronometer override fun onCreate(savedInstanceState: Bundle?) < super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) chronometer = findViewById(R.id.chronometer) chronometer.setOnChronometerTickListener < val elapsedMillis: Long = (SystemClock.elapsedRealtime() - chronometer.base) if (elapsedMillis >5000 && elapsedMillis < 6000) < val strElapsedMillis = "Прошло больше 5 секунд" Toast.makeText( this, strElapsedMillis, Toast.LENGTH_SHORT ).show() >> startButton.setOnClickListener < chronometer.base = SystemClock.elapsedRealtime() chronometer.start() >stopButton.setOnClickListener < chronometer.stop() >resetButton.setOnClickListener < chronometer.base = SystemClock.elapsedRealtime() >> >
// Java package ru.alexanderklimov.chronometer; import android.os.Bundle; import android.os.SystemClock; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Chronometer; import android.widget.Toast; public class MainActivity extends AppCompatActivity < private Chronometer mChronometer; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mChronometer = findViewById(R.id.chronometer); mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() < @Override public void onChronometerTick(Chronometer chronometer) < long elapsedMillis = SystemClock.elapsedRealtime() - mChronometer.getBase(); if (elapsedMillis >5000) < String strElapsedMillis = "Прошло больше 5 секунд"; Toast.makeText(getApplicationContext(), strElapsedMillis, Toast.LENGTH_SHORT) .show(); >> >); > public void onStartClick(View view) < mChronometer.setBase(SystemClock.elapsedRealtime()); mChronometer.start(); >public void onStopClick(View view) < mChronometer.stop(); >public void onResetClick(View view) < mChronometer.setBase(SystemClock.elapsedRealtime()); >>
В примере также добавлена реализация OnChronometerTickListener — когда секундомер отсчитает 5 секунд, то появится всплывающее сообщение.
Обратный отсчёт
В API 24 появился новый метод setCountDown(), позволяющий работать в режиме обратного отсчёта. Родственный XML-атрибут для него — android:countDown. Метод isCountDown() позволит узнать, в каком режиме работает хронометр.
private Chronometer mChronometer; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mChronometer = findViewById(R.id.chronometer); mChronometer.setCountDown(true); // установим начальное значение mChronometer.setBase(SystemClock.elapsedRealtime() + 1000 * 5); >public void onClick(View view)
Последний отсчёт
Читая документацию, наткнулся на новый метод из API 26 (Android 8.0 Oreo) — isTheFinalCountDown(). Я запустил этот код и чуть не упал со стула от неожиданности — неожиданно в телефоне заиграл видеоролик с песней «The Final Countdown/Последний отсчёт» группы «Европа/Europe». Разработчики развлекаются.
Руководство Android Chronometer
Следуйте за нами на нашей фан-странице, чтобы получать уведомления каждый раз, когда появляются новые статьи.
Facebook
1- Android Chronometer
В Android, Chronometer (Хронометр) это интерфейс компонента симулирующий простой таймер (timer).
Примечание: Компонент Chronometer не имеет наготове в Palette окна дизайна, поэтому вам нужно использовать XML код ниже, чтобы добавить его в интерфейс.
Данный атрибут определяет как данный Chronometer ведет счет, вниз (counts down) или вверх (counts up), его значением является true/false.
По умолчанию, Chronometer отображает время в формате «MM:SS» когда время меньше 1 часа, или «H:MM:SS» если время больше 1 часа. Значение атрибута android:format должно имет формат «Text1 %s Text2», и когда Chronometer отображает время, вы получите строку с форматом «Text1 MM:SS Text2» или «Text1 H:MM:SS Text2».
2- Chronometer Methods
long getBase() void setBase(long base) String getFormat() void setFormat(String format) boolean isCountDown() void setCountDown(boolean countDown) boolean isTheFinalCountDown() void start() void stop()
Данный метод полезен только для Chronometer с ведением счета вверх (count up), используется для настройки времени, на которое Chronometer ссылается (Соответствуте значению 00:00).
Параметр base это количество милискунд со времени как система была запущена, включая времяl сна устройства. Если вы используете Android Emulator (Эмулятор Android) время запуска компьютера будет считаться началом координат.
// Returns milliseconds since system boot, including time spent in sleep. long elapsedRealtime = SystemClock.elapsedRealtime(); // Set the time that the count-up timer is in reference to. this.chronometer.setBase(elapsedRealtime); this.chronometer.start();
По умолчанию, Chronometer отображает время по формату «MM:SS» когда время меньше 1 часа, или «H:MM:SS» если время больше 1-го часа. Значение параметра format должно иметь формат «Text1 %s Text2», и когда Chronometer отображает время, вы получите строку с форматом «Text1 MM:SS Text2» или «Text1 H:MM:SS Text2».
Если вы хотите кастомизацию поглубже в отображении формата времени Chronometer, вы можете посмотреть пример в конце данной статьи.
3- Chronometer Events
TODO
4- Example: Chronometer (Count up)
Начнем с простого Chronometer с ведением отсчета вперед (count up), данное приложение можно использовать, чтобы измерять время бегущего атлета.
- File > New > New Project > Empty Activity
- Name: ChronometerExample
- Package name: org.o7planning.chronometerexample
- Language: Java
package com.example.chronometerexample; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.os.SystemClock; import android.view.View; import android.widget.Button; import android.widget.Chronometer; import android.widget.TextView; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class MainActivity extends AppCompatActivity < private TextView textViewInfo; private Chronometer chronometer; private Button buttonStart; private Button buttonStop; private Button buttonResetBaseTime; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.textViewInfo = (TextView) findViewById(R.id.textView_info); this.chronometer = (Chronometer)findViewById(R.id.chronometerExample); this.buttonStart = (Button)findViewById(R.id.button_start); this.buttonStop = (Button)findViewById(R.id.button_stop); this.buttonResetBaseTime = (Button)findViewById(R.id.button_resetBaseTime); this.buttonStop.setEnabled(false); this.buttonResetBaseTime.setEnabled(false); this.buttonStart.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < doStart(); >>); this.buttonStop.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < doStop(); >>); this.buttonResetBaseTime.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < doResetBaseTime(); >>); > // @totalMilliseconds: milliseconds since system boot, including time spent in sleep. private void showInfo(long totalMilliseconds) < // Seconds long totalSecs = totalMilliseconds / 1000; // Show Info long hours = totalSecs / 3600; long minutes = (totalSecs % 3600) / 60; long seconds = totalSecs % 60; this.textViewInfo.setText("Base Time: " + totalSecs +" ~ " + hours + " hours " + minutes+" minutes " + seconds + " seconds"); >private void doStart() < // Returns milliseconds since system boot, including time spent in sleep. long elapsedRealtime = SystemClock.elapsedRealtime(); // Set the time that the count-up timer is in reference to. this.chronometer.setBase(elapsedRealtime); this.chronometer.start(); this.showInfo(elapsedRealtime); // this.buttonStart.setEnabled(false); this.buttonStop.setEnabled(true); this.buttonResetBaseTime.setEnabled(true); >private void doStop() < this.chronometer.stop(); // this.buttonStart.setEnabled(true); this.buttonStop.setEnabled(false); this.buttonResetBaseTime.setEnabled(false); >private void doResetBaseTime() < // Returns milliseconds since system boot, including time spent in sleep. long elapsedRealtime = SystemClock.elapsedRealtime(); // Set the time that the count-up timer is in reference to. this.chronometer.setBase(elapsedRealtime); this.showInfo(elapsedRealtime); >>
5- Example: Chronometer (Count down)
package com.example.chronometerexample; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Chronometer; public class MainActivity extends AppCompatActivity < private Button buttonStart; private Chronometer chronometerCountDown; private int counter = 10; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.chronometerCountDown = (Chronometer) findViewById(R.id.chronometerCountDown); this.buttonStart = (Button) findViewById(R.id.button_start); this.chronometerCountDown.setText(counter + ""); this.buttonStart.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < doStart(); >>); // This listener will customize the chronometer text content. // It will show number from 10 to 0 repeatedly. this.chronometerCountDown.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() < @Override public void onChronometerTick(Chronometer chronometer) < onChronometerTickHandler(); >>); > private void onChronometerTickHandler() < if(this.counter < 0) < this.counter = 10; >this.chronometerCountDown.setText(counter + ""); this.counter--; > private void doStart() < this.chronometerCountDown.start(); >>
6- Example: Custom Format
package com.example.chronometerexample; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.os.SystemClock; import android.view.View; import android.widget.Button; import android.widget.Chronometer; public class MainActivity extends AppCompatActivity < private Button buttonStart; private Chronometer chronometerCustomFormat; private int counter = 10; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.chronometerCustomFormat = (Chronometer) findViewById(R.id.chronometer_customFormat); this.chronometerCustomFormat.setText("Please click start!"); this.buttonStart = (Button) findViewById(R.id.button_start); this.buttonStart.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < doStart(); >>); this.chronometerCustomFormat.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() < @Override public void onChronometerTick(Chronometer chronometer) < onChronometerTickHandler(); >>); > private void onChronometerTickHandler() < long delta = SystemClock.elapsedRealtime() - this.chronometerCustomFormat.getBase(); int h = (int) ((delta / 1000) / 3600); int m = (int) (((delta / 1000) / 60) % 60); int s = (int) ((delta / 1000) % 60); String customText = h +" hours " + m +" minutes " + s +" seconds"; this.chronometerCustomFormat.setText(customText); >private void doStart() < long base = SystemClock.elapsedRealtime(); this.chronometerCustomFormat.setBase(base); this.chronometerCustomFormat.start(); >>
View more Tutorials:
Это онлайн курс вне вебсайта o7planning, который мы представляем, он включает бесплатные курсы или курсы со скидкой.
Android Beginners Guide To Create A Weather Forecast App
* * The Complete Android Oreo(8.1) , N ,M and Java Development
Android App & Game Development :Build 6 Android Apps & Games
Absolute Java Basics for Android
Android and iOS Apps for Your WordPress Blog
Unity 3d Game Development — iOS, Android, & Web — Beginners
Learn Android Development From Scratch
Ultimate Coding Course for Web App and Android Development
The Complete Android™ Material Design Course
Unity Android Game Development : Build 7 2D & 3D Games
Publish Games on Android, iTunes, and Google Play with UE4
Advance Android Programming — learning beyond basics
The Android Crash Course For Beginners to Advanced
Learning Path:Android:Application Development with Android N
Android development quick start for beginners
Developing High Quality Android Applications
Android App Development and Design
Become an iOS/Android Game Developer with Unity 2017
The Complete Android & Java Developer Course — Build 21 Apps
Learning Path: Android: App Development with Android N
The Complete Android App Development
Create Android & iOS Apps Without Coding
Full Stack Mobile Developer course ( iOS 11, and Android O )
Develop Your First 2D Game With Unity3D for Android
Android Internals and Working with the source
How to make a stopwatch android application with start, pause, stop, reset, laps showing in listview source code download.
Stopwatch is one of the most important and useful thing for all the athletics and all the persons who is preparing them selves for online examination. In the current world when android is on its top most of persons use android applications to do their personal tasks. So in this tutorial we are going to Android Create Stopwatch Example Tutorial in Android Studio.
Feature in this stop watch :
- Start Stopwatch .
- Stop Stopwatch .
- Pause Stopwatch .
- Lap feature with lap showing inside listview just below the buttons.
Android Create Stopwatch Example Tutorial in Android Studio.
Code for MainActivity.java file.
package com.android_examples.stopwatch_android_examplescom; import android.os.Bundle; import android.os.SystemClock; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.os.Handler; import java.util.Arrays; import java.util.List; import java.util.ArrayList; public class MainActivity extends AppCompatActivity < TextView textView ; Button start, pause, reset, lap ; long MillisecondTime, StartTime, TimeBuff, UpdateTime = 0L ; Handler handler; int Seconds, Minutes, MilliSeconds ; ListView listView ; String[] ListElements = new String[] < >; List ListElementsArrayList ; ArrayAdapter adapter ; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.textView); start = (Button)findViewById(R.id.button); pause = (Button)findViewById(R.id.button2); reset = (Button)findViewById(R.id.button3); lap = (Button)findViewById(R.id.button4) ; listView = (ListView)findViewById(R.id.listview1); handler = new Handler() ; ListElementsArrayList = new ArrayList(Arrays.asList(ListElements)); adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, ListElementsArrayList ); listView.setAdapter(adapter); start.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < StartTime = SystemClock.uptimeMillis(); handler.postDelayed(runnable, 0); reset.setEnabled(false); >>); pause.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < TimeBuff += MillisecondTime; handler.removeCallbacks(runnable); reset.setEnabled(true); >>); reset.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < MillisecondTime = 0L ; StartTime = 0L ; TimeBuff = 0L ; UpdateTime = 0L ; Seconds = 0 ; Minutes = 0 ; MilliSeconds = 0 ; textView.setText("00:00:00"); ListElementsArrayList.clear(); adapter.notifyDataSetChanged(); >>); lap.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < ListElementsArrayList.add(textView.getText().toString()); adapter.notifyDataSetChanged(); >>); > public Runnable runnable = new Runnable() < public void run() < MillisecondTime = SystemClock.uptimeMillis() - StartTime; UpdateTime = TimeBuff + MillisecondTime; Seconds = (int) (UpdateTime / 1000); Minutes = Seconds / 60; Seconds = Seconds % 60; MilliSeconds = (int) (UpdateTime % 1000); textView.setText("" + Minutes + ":" + String.format("%02d", Seconds) + ":" + String.format("%03d", MilliSeconds)); handler.postDelayed(this, 0); >>; >
Code for activity_main.xml layout file.
Screenshots:
Click here to download Android Create Stopwatch Example Tutorial in Android Studio project with source code.
Make a Chronometer application In Android Studio and Java
in this tutorial I will show you how to make a chronometer app with a good UI design, in android studio and java, you will some assets that you will find in this article. you will also learn how to make a custom toggle button using Android Studio, So let’s start.
Image assets
Style.xml
we want to change the style and make the app without an action bar because we don’t need it, and change the status bar color
Colors.xml
The custom button
to do this, right-click on your drawable folder choose new and new drawable file, name it start_pause_btn_bg and add this code
now let’s code the main layout of our activity
inside your activity_main.xml file add this code< androidx.constraintlayout.widget.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
now let’s add the Java Code
Make a Chronometer application In Android Studio and Java Reviewed by Medics on April 02, 2020 Rating: 5