Как сделать часы в java

Обновлено: 05.07.2024

Разработка виджетов для платформы Android включает несколько иной набор задач, чем разработка стандартных приложений. В этой серии руководств мы будем работать над процессом разработки настраиваемого виджета аналоговых часов. Часы будут основаны на классе Android AnalogClock и настроены с вашей собственной графикой.

До сих пор в этой серии мы разработали и внедрили виджет в XML и Java и получили работающий виджет часов, который пользователь может добавить на свой домашний экран. В этой заключительной части серии мы собираемся реализовать базовую пользовательскую конфигурацию. Во второй части мы создали несколько дизайнов часов, поэтому теперь мы позволим пользователю выбирать между ними.

Это часть 4 из 4 в серии, посвященной созданию настраиваемого виджета аналоговых часов Android в четырех уроках:

Встраивание конфигурации пользователя в наше приложение-виджет будет включать новый класс Java Activity, предоставляющий пользователю выбор вариантов. Когда пользователь выбирает дизайн, мы обновляем внешний вид виджета и сохраняем выбор пользователя в общих настройках приложения. Мы также будем расширять класс виджета для обработки пользовательских кликов на виджете и для чтения из общих настроек по выбору пользователя. Помимо работы с этими двумя файлами Java, мы создадим новый файл значений и файл макета XML для выбора Activity вместе с некоторыми изображениями, которые будут отображаться в нем.

Шаг 1. Обработка кликов виджетов.

Не беспокойтесь об ошибках Eclipse, они исчезнут, когда мы создадим новый класс Activity на следующем шаге. После этой строки создайте отложенное намерение следующим образом:

Как вы видите, запуск действий при щелчках виджетов немного отличается. Обратите внимание, что мы передаем объект Context и ссылку на новое намерение. Теперь добавьте следующий код, указывающий, что Pending Intent должен запускаться при нажатии виджета:

Мы указываем виджет, ссылаясь на идентификатор родительского макета в XML-файле clock_widget_layout. Нам нужно использовать Remote Views для ссылки на элементы пользовательского интерфейса, поскольку мы находимся в классе виджетов, а не в классе Activity. Мы добавим больше кода в этот класс позже.

Шаг 2: Создайте активность выбора

Сделайте ваш новый класс Activity и тот, который будет обрабатывать клики пользователей, расширяя его начальную строку следующим образом:

Часы являются одним из простых скриптов, но, одновременно с тем, и наиболее часто используемым для сайта. На его основе можно сделать различные таймеры, а также анимацию, зависящую от времени. Сегодня я расскажу, как сделать часы на JavaScript двумя способами.

Первый способ - метод toLocaleTimeString()

Для написания первого скрипта нам понадобится HTML заготовка, с которой и будем работать:

Укажем ей следующие свойства:

Теперь можно писать сам код. Основан он будет на использовании метода toLocaleTimeString() объекта Date. Этот метод выводит полное время в формате, установленном у пользователя на его ОС. Порой, это бывает очень удобно, а главное этот вариант самый короткий.

В этой реализации часы будут запускаться после загрузки страницы, для этого скрипт обернут в функцию onload. Далее используется функция setInterval(), принимающая два параметра: интервал в одну секунду и анонимную функцию, которая будет получать текущие время и выводить его в блок с >

Всё часы готовы!

Во втором варианте скрипта, все элементы часов вытягиваются по отдельности, а именно часы, минуты и секунды. Так же как и в первом скрипте, нужно создать блок, в котором будет выводиться время в этом случае с >

Указываем ему отличные свойства от первого скрипта:

Весь код помещается в функцию, которая будет вызвана после элемента с Внутри её идёт взаимодействие с объектом Date, а именно: получения через его методы часы, минуты и секунды. Этот способ удобен тем, что мы можем сами контролировать формат выхода времени часов на сайте. Для этого в примере есть проверка, которая дописывает недостающие нули в записи от времени. Далее формируется строка, и при помощи свойства innerHTML происходит вывод времени на странице в блок с В конце функции запускается обычный таймер, который через каждую секунды вызывает эту же функцию.

Всё часы готовы!

Разноцветные часы на JavaScript

Выше были показаны стандартные способы вывода часов на сайте. Конечно, всё это можно усложнить и сделать чуть-чуть интереснее, например: каждую секунду менять цвет часов, минут и секунд. Ниже как раз описан такой алгоритм, но для его реализации необходимо добавить три элемента span с >

Всё часы готовы!

В заключение к этой статьи я хочу добавить, что часы можно сделать достаточно оригинальными и интересными, если потратить на это чуть больше времени, хотя сама логика скрипта достаточна проста.

Я новичок в стек переполнения, а также новичок в Java. Я пытаюсь сделать часы, чтобы практиковать / укреплять свои навыки. Вот в чем моя проблема:

Я создал класс TimeComponents, в котором у меня есть исходный код для фактической работы часов. Я пытаюсь понять, как на самом деле отображать мои часы в моем основном классе, TimeViewer. (Надеюсь, я правильно сформулировал это).

А вот основной класс, который я хочу использовать для печати моих часов:

Любая помощь приветствуется!

3 ответа

Трудно сказать, что на самом деле ваш вопрос, но эта строка:

НЕ будет увеличивать секунды. Я попробовал это:

Причина в том, что суффикс ++ применяет инкремент ПОСЛЕ присвоения значения переменной, поэтому вы теряете инкремент.

Вы можете просто сделать функцию toString в своей функции Time. Он создает строку с 3 целыми числами, и вы можете напечатать ее в своей главной.

Я посмотрел ваш код, и кажется, что вы делаете что-то странное в конструкторе, который не связывается с данными класса (начальные).

Я надеюсь, что это может помочь вам. И извините, если вы думаете, что есть некоторые дополнительные переменные. Они на самом деле используются мной для реализации аналоговых часов, которые я сейчас пробую.

Я не совсем уверен, о чем конкретно вы спрашиваете, но вы в целом просили о помощи, и я вижу пару проблем с вашим кодом, с которыми я могу помочь.

Ваш основной метод пуст, поэтому при запуске кода ничего не произойдет. Попробуйте создать экземпляр TimeComponent в вашем основном методе и вызовите Tick() с ним, чтобы увидеть, что происходит.

В конструкторе вашего класса TimeComponents вы установили свои входные значения "initialHour, initialMinutes и initialSeconds" равными нулю. Это не объявляет ваши "минуты, секунды и часы" переменных и приведет к ошибке при запуске вашего метода Tick(). В вашем конструкторе попробуйте установить каждую из этих переменных равной вашим соответствующим входным переменным, чтобы избежать этого, например так:

Для увеличения с помощью оператора ++ он не будет работать, если вы не поместите ++ прямо рядом с именем переменной, которую хотите увеличить, например:

В этой статье мы будем анимировать окно апплета, чтобы показать аналоговые часы с задержкой в 1 секунду. Идея состоит в том, чтобы отображать системное время каждого экземпляра.


Подходить:
Каждая стрелка часов будет анимироваться с задержкой в 1 секунду, держа один конец в центре. Положение другого конца может быть получено по системному времени. Угол, образованный стрелкой часов в каждую секунду, будет отличаться на протяжении всего пути. Вот почему разные экземпляры делают разный угол к горизонтальной линии.

Как запустить:

Ниже приведена реализация вышеуказанного подхода:

// Java-программа для иллюстрации
// аналоговые часы с использованием апплетов

Читайте также: