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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экранная кнопка гарантом 
:(
    Опции темы
Antropoid
Дата 31.10.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



Расположение экранных кнопок зависит от реализации девайса. Вопрос: можно ли сделать кнопку, которая будет гарантированно эранной (а не в выпадающем меню) на всех девайсах?


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
Dancer
Дата 31.10.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



"Элементарно, Ватсон! smile" Сам рисуешь, и не делаешь addCommandListener() а слушаешь лишь всё с Canvas и когда нажимается softKey анализируешь, что нажато и работаешь по определённому тобой алгоритму.


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
Antropoid
Дата 29.8.2007, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 786
Регистрация: 1.6.2006
Где: &Ukraine==Ode ssa

Репутация: 13
Всего: 16



а без Canvas как быть? Если TextBox, например...


--------------------
user posted image
Задыхаясь от восторга заниматься чепухой. 
PM MAIL   Вверх
W0LF
Дата 29.8.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

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



никак.
Вот в blackberry там с этим все намного проще, а в j2me тока рисовать свою канву и свои кнопки


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Samuil
Дата 30.8.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в(Job)ываю
**


Профиль
Группа: Участник
Сообщений: 705
Регистрация: 26.4.2006
Где: Uzbekistan.Tashke nt

Репутация: 5
Всего: 6



W0LF, Что такое blackberry?


--------------------
Выбор уже сделан, остается его только осознать   
smile    smile 
      smile  

user posted image
PM MAIL ICQ   Вверх
W0LF
Дата 30.8.2007, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

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



Samuil,  smile 
Создай новую тему, я тебе там отвечу smile



--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
DarkNeo
Дата 31.8.2007, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.8.2007
Где: Екатеринбург

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



А у меня проблемка.
Цель - та же самая, как и у автора темы.
Использую Canvas, сделал прорисовку экранных клавиш.

Но!
Полоска внизу канваса, предназначенная для команд, остается на месте... и пропадает только при вызове setFullScreenMode(true)..
Можно ли как-либо ее убрать и в нормальном режиме? 
Очень хочется, чтобы на Нокиах, например, верхняя служебная полоска с информацией о сигнале телефона и заряде батареи не пропадала.. а в полноэкранном режиме её нет..

PM MAIL WWW   Вверх
math64
Дата 31.8.2007, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



А как определить коды softKeys ?
Моя Nokia их не ловит - ни keyPressed, ни keyReleased()

И в отличие от DefaultColorPhone команды не нумерует и их приходится выбирать джойстиком.

Можно поступить по-другому:
Добавить команду "Меню" и ту что хотите назначить на Soft2 с помощью addCommandListener().
При нажатии на "Меню" отрисовывать меню вручную. При использовании Form открывается своя Canvas на весь экран (или List), после выбора пункта меню - возврат к Form.

PM   Вверх
DarkNeo
Дата 31.8.2007, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.8.2007
Где: Екатеринбург

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



math64, можно нажатие софтов через getGameAction() отлавливать. Работает везде.
PM MAIL WWW   Вверх
math64
Дата 31.8.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Как это? Проверяю коды клавиш как:
Код

package keytest;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class KeyTest extends MIDlet {
  private String keyName = "";
  private int keyCode;
  private int gameAction;
  private boolean pressed;


  private Canvas canvas = new KeyTestCanvas();
  class KeyTestCanvas extends Canvas {
    protected void paint(Graphics g) {
      g.setColor(0xFFFFFF);
      g.fillRect(0,0,getWidth(), getHeight());
      g.setColor(0);
      g.drawString((pressed ? "P " : "R ") + keyName,
              0, 0, g.LEFT | g.TOP);
      g.drawString("key=" + String.valueOf(keyCode) +
              " game=" + String.valueOf(gameAction),
              0, g.getFont().getHeight(), g.LEFT | g.TOP);
    }

    protected void keyPressed(int keyCode) {
      pressed = true;
      keyName = getKeyName(keyCode);
      KeyTest.this.keyCode = keyCode;
      gameAction = getGameAction(keyCode);
      repaint();
    }

    public void keyReleased (int keyCode) {
      pressed = false;
      keyName = getKeyName(keyCode);
      KeyTest.this.keyCode = keyCode;
      gameAction = getGameAction(keyCode);
      repaint();
    }
  };

  public void startApp() {
    Display.getDisplay(this).setCurrent(canvas);
  }
  
  public void pauseApp() {
  }
  
  public void destroyApp(boolean unconditional) {
  }
}

На нажатие/отпускание softkeys никак не реагирует
PM   Вверх
DarkNeo
Дата 1.9.2007, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.8.2007
Где: Екатеринбург

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



math64
Код

private void keyReaction(int keyCode)
{
    if (getKeyName(keyCode).equals("SOFT1"))
        {
            //some action
        }
        else if (getKeyName(keyCode).equals("SOFT2"))
        {
            //some action
        }
        
        try
        {
            switch (getGameAction(keyCode))
            {
            case Canvas.DOWN:
                //some action
                break;
            case Canvas.UP:
                //some action
                break;
            case Canvas.FIRE:
                //some action
                break;
            }
        }
        catch (Exception e) // getGameAction throws exception on Motorola
        {                   // when opening flipper
            return;
        }
}

protected void keyPressed(int keyCode)
{
    keyReaction(keyCode);
}

PM MAIL WWW   Вверх
math64
Дата 2.9.2007, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



DarkNeo, ты невнимательно меня читаешь - в keyPressed() при нажатии на softKeys я вообще не попадаю. А если бы и попадал то на реальном девайсе keyName был бы по русски (например Clear называется "Клавиша очистки", при выборе английского языка - "Clear key").

Предложенный мной вариант тоже не работает - если добавить две команды типа Command.OK они обе попадут в меню на Soft1, а Soft2 останется неиспользована. Конечно, если подобрать подходящие типы команд, то они распределятся по Soft1 и Soft2, но нет гарантии что для девайса другой фирмы всё будет OK.

Добавлено через 8 минут и 54 секунды
Думаю если добавлять две команды типа Command.OK и Command.Cancel они распределятся по Soft1 и Soft2 на всех девайсах (но неизвестно в каком порядке)
PM   Вверх
DarkNeo
Дата 2.9.2007, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.8.2007
Где: Екатеринбург

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



math64, зачем тебе обрабатывать нажатия софт-клавиш, если ты используешь команды?
Убери их, выстави commandListener в null, и назначай действия на нажатия софтов..

Цитата(math64 @  2.9.2007,  01:31 Найти цитируемый пост)
то на реальном девайсе keyName был бы по русски (например Clear называется "Клавиша очистки", при выборе английского языка - "Clear key").

getKeyName() разве может что-то подобное возвратить? Что-то я очень сомневаюсь...
во всяком случае, предложенный мной вариант используют несколько десятков тысяч пользователей в моей программе... и всё ОК...что я делаю не так?

PM MAIL WWW   Вверх
DarkNeo
Дата 2.9.2007, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 31.8.2007
Где: Екатеринбург

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



Цитата(DarkNeo @ 2.9.2007,  21:35)
math64, зачем тебе обрабатывать нажатия софт-клавиш, если ты используешь команды?
Убери их, выстави commandListener в null, и назначай действия на нажатия софтов..

Цитата(math64 @  2.9.2007,  01:31 Найти цитируемый пост)
то на реальном девайсе keyName был бы по русски (например Clear называется "Клавиша очистки", при выборе английского языка - "Clear key").

getKeyName() разве может что-то подобное возвратить? Что-то я очень сомневаюсь...
во всяком случае, предложенный мной вариант используют несколько десятков тысяч пользователей в моей программе... и всё ОК...что я делаю не так?

хотя нет... верным будет такой код:
Код

else if (getKeyName(keyCode).equals("SOFT1") | getKeyName(keyCode).indexOf("Left") != -1) 

и
Код

else if (getKeyName(keyCode).equals("SOFT2") | getKeyName(keyCode).indexOf("Right") != -1)


вот это работало на всех телефонах, которые я видел.

Это сообщение отредактировал(а) DarkNeo - 2.9.2007, 23:33
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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