Модераторы: javastic, AntonSaburov
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Создание анимированных часов 
:(
    Опции темы
javastic
Дата 24.8.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

Репутация: 19
Всего: 27



Здравствуйте Винградовцы! Вот решил выложить свой второй пример, пример по созданию часов использующих вместо стандартых цифр изображения. В архиве идут изображения используемые в программе, созданные при помощи 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


Это сообщение отредактировал(а) javastic - 15.8.2007, 10:36


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0794 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.