
Эксперт
  
Профиль
Группа: Комодератор
Сообщений: 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.jadclock.jarАвтор: SamuilЭто сообщение отредактировал(а) javastic - 15.8.2007, 10:36
--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp
|