Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Создание анимированных часов

Поиск:
Здравствуйте Винградовцы! Вот решил выложить свой второй пример, пример по созданию часов использующих вместо стандартых цифр изображения. В архиве идут изображения используемые в программе, созданные при помощи Photoshop'а , мидлет работает под MIDP1.0, CLDC 1.0!
код:
Код

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;

public class mainMidlet extends MIDlet {
  Display disp;
  public void startApp() {
    disp = Display.getDisplay(this);
    draw drawClock = new draw();// вызываем класс draw() отвечающий за отображение часов
    disp.setCurrent(drawClock);
  }

  public void pauseApp() {}

  public void destroyApp(boolean b) {}
}


Второй класс берет часы, минуты и секунды с телефона и помещает их в int переменные, вот код:

Код

import java.util.Calendar;

public class TimerCod {
  public int hour;
  public int min;
  public int sec;

  public void time() {
    Calendar cal = Calendar.getInstance();
    hour = cal.get(11);//часы
    min = cal.get(12);//минуты
    sec = cal.get(13);//секунды
  }
}


А вот и главный код отображающий и переводящий числа в изображения:А вот и главный код отображающий и переводящий числа в изображения, старался сделать подробное описание методов и коментариев:
Код

import java.io.IOException; // Исключение вывода изображений
import javax.microedition.lcdui.*; // Канва

class draw extends Canvas implements Runnable {
  private boolean openclockThr = true; //булева для открытия потока
  private Image img[] = new Image[10]; //массив изображений цифр
  private Image displayIm; // картинка жк. дисплея
  private Image tochki; //картинка точек на дисплее

  private Thread thr = new Thread(this); // Поток отвечающий за работу часов
  private int hour, minu, secu; // Для принятия данных из класса TimerCod
  private int h_1 = 0, h_2 = 0, m_1, m_2, s_1 = 0, s_2 = 0;
  private TimerCod timer = new TimerCod(); // вызов класса TimerCod

  private String getSec_int_to_str = ""; //  используется в методе translator()
  private String getHour_int_to_str = ""; //  используется в методе translator()
  private String getMin_int_to_str = ""; //  используется в методе translator()
  private String hour_str_1, hour_str_2, minute_str_1, // Стринги используемые в методе translator()
  minute_str_2, secunde_str_1, secunde_str_2;

  private char hour_array[] = new char[2]; // массив для принятия данных часов
  private char minute_array[] = new char[2]; // массив для принятия данных минут
  private char secunde_array[] = new char[2]; // массив для принятия данных секунд

  public draw() {
    timer.time(); // вызываем класс TimerCod и метод time()
    hour = timer.hour; //присваиваем часы
    minu = timer.min; //присваиваем минуты
    secu = timer.sec; //присваиваем секунды

    for (int i = 0; i <= 9; i++) {
      try {
        img[i] = Image.createImage("/num/" + i + ".PNG"); //Грузим картинки цифр для часов
      } catch (IOException ex) {
        System.out.println("Image not loading");
      }
    }
    try {
      displayIm = Image.createImage("/num/display.PNG"); //берем картинкм из папки
      tochki = Image.createImage("/num/tochki.PNG");
    } catch (IOException ex1) {
      System.out.println("Image not loading");
    }
    thr.start(); // Стартуем поток отвесающий за обновления часов
  }

  public void translator() { //Главный метод отвечающий за изменение изменение времени
    if (secu < 59) { // Ставим ограничение на секунды
      secu++;
    } else {
      secu = 0;
      if (minu < 59) { // Ставим ограничение на минуты
        minu += 1;
      } else {
        minu = 0;
        if (hour < 23) { // Ставим ограничение на часы
          hour++;
        } else { // в противном случае на все int переменые ставим значение 0
          hour = 0;
          minu = 0;
          secu = 0;
        }
      }
    }

    getHour_int_to_str = String.valueOf(hour); //Переводим int hour в string
    getMin_int_to_str = String.valueOf(minu); //Переводим int minu в string
    getSec_int_to_str = String.valueOf(secu); //Переводим int secu в string

    //--------------------------------------------------------------------------
    if (getHour_int_to_str.length() <= 1) { // Проверяем длину строки часов, так если часы, минуты, секуды меньше 10 часов то телефон дает однозначное значение
      h_1 = 0; // Эта переменная пригодится для прорисовки цифр, отвечающая за вывод первой картинки часов
      h_2 = hour; //переменная пригодится для прорисовки второй картинки часов
    } else {
      hour_array[0] = getHour_int_to_str.charAt(0); // берем из строки символ под индексом 0 и ложим в массив hour_array
      hour_array[1] = getHour_int_to_str.charAt(1); // берем из строки символ под индексом 1 и ложим в массив hour_array

      hour_str_1 = String.valueOf(hour_array[0]); // В следующую переменную строки засовываем символ под индексом 0 из массива hour_array
      hour_str_2 = String.valueOf(hour_array[1]); // далее засовываем символ под индексом 1 из массива hour_array

      h_1 = Integer.parseInt(hour_str_1); // В int h_1 переводим строку hour_str_1(далее h_1 исполдьзуется в методе paint())
      h_2 = Integer.parseInt(hour_str_2); // Эта соответсвенно также как у предыдущая переменная
    }
    //--------------------------------------------------------------------------
    if (getMin_int_to_str.length() <= 1) { // Проверяем длину строки минут, так если часы, минуты, секуды меньше 10 часов то телефон дает однозначное значение
      m_1 = 0; // Эта переменная пригодится для прорисовки цифр, отвечающая за вывод первой картинки минут
      m_2 = minu; //переменная пригодится для прорисовки второй картинки минут
    } else {
      minute_array[0] = getMin_int_to_str.charAt(0); // берем из строки символ под индексом 0 и ложим в массив minute_array
      minute_array[1] = getMin_int_to_str.charAt(1); // берем из строки символ под индексом 1 и ложим в массив minute_array

      minute_str_1 = String.valueOf(minute_array[0]); // В следующую переменную строки засовываем символ под индексом 0 из массива minute_array
      minute_str_2 = String.valueOf(minute_array[1]); // далее засовываем символ под индексом 1 из массива minute_array

      m_1 = Integer.parseInt(minute_str_1); // В int m_1 переводим строку minute_str_1(далее m_1 исполдьзуется в методе paint())
      m_2 = Integer.parseInt(minute_str_2); // Эта соответсвенно также как у предыдущая переменная
    }
    //--------------------------------------------------------------------------
    if (getSec_int_to_str.length() <= 1) { // Проверяем длину строки секунд, так если часы, минуты, секуды меньше 10 часов то телефон дает однозначное значение
      s_1 = 0; // Эта переменная пригодится для прорисовки цифр, отвечающая за вывод первой картинки секунд
      s_2 = secu; //переменная пригодится для прорисовки второй картинки секунд
    } else {
      secunde_array[0] = getSec_int_to_str.charAt(0); // берем из строки символ под индексом 0 и ложим в массив secunde_array
      secunde_array[1] = getSec_int_to_str.charAt(1); // берем из строки символ под индексом 1 и ложим в массив secunde_array

      secunde_str_1 = String.valueOf(secunde_array[0]); // В следующую переменную строки засовываем символ под индексом 0 из массива secunde_array
      secunde_str_2 = String.valueOf(secunde_array[1]); // далее засовываем символ под индексом 1 из массива secunde_array

      s_1 = Integer.parseInt(secunde_str_1); // В int s_1 переводим строку secunde_str_1(далее s_1 исполдьзуется в методе paint())
      s_2 = Integer.parseInt(secunde_str_2); // Эта соответсвенно также как у предыдущая переменная
    }
    //--------------------------------------------------------------------------
    repaint(); // идем в метод paint();
  }

  public void paint(Graphics g) {
    g.setColor(255, 255, 255); // Цвет для заливки заднего фона
    g.fillRect(0, 0, g.getClipWidth(), g.getClipHeight()); // Заливаем область экрана белым цветом

    g.drawImage(displayIm, 10, 10, 0); // отображаем жк
    g.drawImage(img[h_1], 20, 15, 0); // часы 1-ую цифру
    g.drawImage(img[h_2], 30, 15, 0); // часы 2-ую цифру
    g.drawImage(img[m_1], 50, 15, 0); // минуты 1-ую цифру
    g.drawImage(img[m_2], 60, 15, 0); // минуты 2-ую цифру
    g.drawImage(img[s_1], 80, 15, 0); // секунды 1-ую цифру
    g.drawImage(img[s_2], 90, 15, 0); // секунды 2-ую цифру

    g.drawImage(tochki, 40, 15, 0); // точки между часами и минутами
    g.drawImage(tochki, 70, 15, 0); //точки между минутами и секундами
  }

  public void run() {
    while (openclockThr == true) {
      try {
        Thread.sleep(1000); // Раз в секунду вызываем метод translator()
        translator(); // Вызываем метод "переводчик"
      } catch (InterruptedException ex) {
      }
    }
  }
}



clock.jad

clock.jar

Автор: Samuil
Сайт: http://www.netusaytaumenya.coma






Просмотров: 3384

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную