Дизайн пользовательского интерфейса Blackberry – настраиваемый пользовательский интерфейс?

Я пытаюсь разработать приложение Blackberry, и мне интересно, есть ли какие-либо ресурсы по созданию пользовательских элементов пользовательского интерфейса, существующих скинов и других возможностей?

Я разработал несколько приложений для iPhone с пользовательским интерфейсом и т. Д., Поэтому не уверен, что предлагает BB мир с точки зрения разработки пользовательского интерфейса.

Любые советы, предложения или идеи были бы замечательными.

В Blackberry нет скинов, два способа, которыми я знаю, чтобы добиться эффекта кожи

  • создать собственную тему
  • создавать настраиваемые элементы управления

Создать тему BlackBerry

удалена мертвая ссылка Imageshack – BlackBerry Theme Builder

Что вы можете сделать с Theme Builder? Некоторые из его основных функций позволяют:

  • Настройка значков приложений BlackBerry
  • Измените изображение баннера на главном экране и цвета значка / индикатора
  • Создайте свои собственные кнопки
  • Настроить внешний вид диалогового windows и всплывающие windows
  • Настроить экран ожидания
  • Настроить внешний вид меню и списков
  • Настройте экраны приложений телефона
  • Настроить шрифты, используемые на устройстве BlackBerry

Как создать свои собственные темы Blackberry от BrileyKenney
bb dev journal – Просто тема!
Темы для BlackBerry и анимированная графика

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

Дизайн макета

Программирование gui может занять некоторое время, и если вы захотите решить некоторые вопросы при планировании графического интерфейса без кодирования, вам может понадобиться нарисовать макет GUI.

Вы можете использовать бесплатный BlackBerry UI Prototyping Visio Stencils – v1.0 от ArtfulBits.

удален мертвый Imageshack link
удален мертвый Imageshack link

Создание пользовательского элемента управления

Создавая настраиваемый элемент управления, вы можете настроить

  • размер контроля
  • контрольная форма
  • контроль фона (цвет, изображение)
  • контрольный шрифт (размер, стиль, цвет)
  • граница управления (размер, стиль, цвет)

Все это для штатов

  • отключен
  • нормальный
  • сосредоточены
  • активный (нажал)

В конце вы можете просто скинуть свой контроль, установив фоновое изображение

основы

devsushi.com: Blackberry JDE API – поле для интерфейса пользователя в основном даст представление о существующих элементах управления ежевикой ui, с кодами и скриншотами.

SO: добавление элементов в ListField (BlackBerry)
SO: Встроенный HTML-контроль для Blackberry?
SO: Blackberry – как получить значение datetime из DateField?
SO: Стилирование приложения BlackBerry, чтобы выглядеть как iPhone

Менеджеры, макет

Даже используя стандартные элементы управления, нам нужно компоновать и группировать то, что мы хотим, поэтому нам нужны пользовательские менеджеры:
Мышление BlackBerry: пользовательский интерфейс BlackBerry – создание базового менеджера полей
Мышление BlackBerry: простой менеджер макетов сетки BlackBerry
Мышление BlackBerry: создание пользовательского экрана, вертикальная прокрутка и многое другое
SO: проблема с прокруткой в ​​приложении Blackberry
SO: Как установить ScrollBar в VerticalFieldManager в Blackberry?
Беспроводная связь. Создайте собственный менеджер компоновки экрана.
SO: Blackberry – получить все дочерние поля управления
SO: Отмена прокрутки в Менеджере макетов
SO: создание пользовательских макетов в BlackBerry
SO: Blackberry устанавливает положение RichtextField в FullScreen
SO: Развлечения с полевыми менеджерами
SO: BlackBerry – пользовательская панель инструментов меню
SO: BlackBerry – настраиваемый циклический горизонтальный экран

Пользовательские элементы управления

Набор статей о написании пользовательских элементов управления:
Мышление BlackBerry: пользовательский интерфейс BlackBerry – простое пользовательское поле
Coderholic: пользовательское поле Blackberry
Беспроводная связь: создайте свой собственный VirtualKeyboard для BBStorm
Wireless: ListField с флажками
CodeProject: создание графика XY / графика в качестве пользовательского поля BlackBerry
SO: Blackberry – Пользовательский размер EditField
SO: Blackberry – Как добавить границу в BasicEditField?
SO: Blackberry – настройка цвета фона LabelField
SO: Blackberry меняет цвет дочерних полей в горизонтальном фокусе менеджера
SO: настройка цвета фона и шрифта для RichTextField, TextField
SO: Blackberry Java: TextField без каретки?
SO: Image Map-like Blackberry Control – приложение CLDC
SO: Blackberry – однострочный BasicEditField с большим текстом
SO: Blackberry – пользовательский BubbleChartField
SO: Blackberry – получить отмеченные элементы из списка с флажками
SO: BlackBerry – создание настраиваемого поля даты
SO: BlackBerry – Как создать подменю?
SO: BlackBerry – Как я могу показать ярлык с смайликами?
SO: BlackBerry – отображает индикатор режима печати программно

Графика, анимация

SO: BlackBerry – нарисовать изображение на экране
SO: Blackberry – фоновое изображение / анимация RIM OS 4.5.0
SO: Blackberry – загрузка экрана с анимацией
SO: Как установить Anti Aliasing в Blackberry Storm?
SO: Blackberry устанавливает область отсечения / область
SO: Лучше ли использовать Bitmap или EncodedImage в BlackBerry?
SO: Blackberry – анимация макета полей

шрифты

Беспроводная связь: изменение шрифтов в приложении BlackBerry
Журналы разработчиков: Шрифты
SO: Как создать собственный шрифт для приложения BlackBerry
SO: Как установить шрифт в текст LabelField в Blackberry?
SO: Как сделать пользовательский интерфейс Blackberry более привлекательным?
SO: Как динамически менять цвет шрифта ящика Blackberry?
SO: BlackBerry – отображение текста в Юникоде

Пример стандартного скина Media Application на Bold 9000

удалена мертвая ссылка ImageShack – sliced ​​Media application

удаленная мертвая ссылка ImageShack – нарезанные изображения

Используйте расширение ButtonField для отображения изображений с помощью кнопок:

class BitmapButtonField extends ButtonField { Bitmap mNormal; Bitmap mFocused; Bitmap mActive; int mWidth; int mHeight; public BitmapButtonField(Bitmap normal, Bitmap focused, Bitmap active) { super(CONSUME_CLICK); mNormal = normal; mFocused = focused; mActive = active; mWidth = mNormal.getWidth(); mHeight = mNormal.getHeight(); setMargin(0, 0, 0, 0); setPadding(0, 0, 0, 0); setBorder(BorderFactory .createSimpleBorder(new XYEdges(0, 0, 0, 0))); setBorder(VISUAL_STATE_ACTIVE, BorderFactory .createSimpleBorder(new XYEdges(0, 0, 0, 0))); } protected void paint(Graphics graphics) { Bitmap bitmap = null; switch (getVisualState()) { case VISUAL_STATE_NORMAL: bitmap = mNormal; break; case VISUAL_STATE_FOCUS: bitmap = mFocused; break; case VISUAL_STATE_ACTIVE: bitmap = mActive; break; default: bitmap = mNormal; } graphics.drawBitmap(0, 0, bitmap.getWidth(), bitmap.getHeight(), bitmap, 0, 0); } public int getPreferredWidth() { return mWidth; } public int getPreferredHeight() { return mHeight; } protected void layout(int width, int height) { setExtent(mWidth, mHeight); } } 
  • поместите HorizontalFieldManagers внутри VerticalFieldManagers и наоборот
  • использовать разные изображения для нормальных, сфокусированных и активных состояний
  • если вам нужны настраиваемые кнопки, вы можете нарисовать их в переопределении метода manager paint () после super.paint ()

Остальная часть кода:

 class Scr extends MainScreen implements FieldChangeListener { Bitmap mBmpHeader = Bitmap.getBitmapResource("header.png"); Bitmap mBmpCover = Bitmap.getBitmapResource("cover.png"); Bitmap mBmpTitle = Bitmap.getBitmapResource("title.png"); Bitmap mBmpTimeline = Bitmap.getBitmapResource("timeline.png"); Bitmap mBmpLeftside = Bitmap.getBitmapResource("leftside.png"); Bitmap mBmpPrevNrm = Bitmap.getBitmapResource("btn_prev_normal.png"); Bitmap mBmpPlayNrm = Bitmap.getBitmapResource("btn_play_normal.png"); Bitmap mBmpPauseNrm = Bitmap.getBitmapResource("btn_pause_normal.png"); Bitmap mBmpStopNrm = Bitmap.getBitmapResource("btn_stop_normal.png"); Bitmap mBmpNextNrm = Bitmap.getBitmapResource("btn_next_normal.png"); Bitmap mBmpPrevFcs = Bitmap.getBitmapResource("btn_prev_focused.png"); Bitmap mBmpPlayFcs = Bitmap.getBitmapResource("btn_play_focused.png"); Bitmap mBmpPauseFcs = Bitmap.getBitmapResource("btn_pause_focused.png"); Bitmap mBmpStopFcs = Bitmap.getBitmapResource("btn_stop_focused.png"); Bitmap mBmpNextFcs = Bitmap.getBitmapResource("btn_next_focused.png"); Bitmap mBmpRightside = Bitmap.getBitmapResource("rightside.png"); VerticalFieldManager mMainManager; HorizontalFieldManager mHeaderManager; HorizontalFieldManager mCoverManager; HorizontalFieldManager mTitleManager; HorizontalFieldManager mTimelineManager; HorizontalFieldManager mToolbarManager; BitmapField mHeader; BitmapField mCover; BitmapField mTitle; BitmapField mTimeline; BitmapField mLeftside; BitmapField mRightside; BitmapButtonField mBtnPrev; BitmapButtonField mBtnPlay; BitmapButtonField mBtnPause; BitmapButtonField mBtnStop; BitmapButtonField mBtnNext; public Scr() { add(mMainManager = new VerticalFieldManager()); addHeader(); addCover(); addTitle(); addTimeline(); addToolbar(); } private void addHeader() { mMainManager.add(mHeaderManager = new HorizontalFieldManager()); mHeaderManager.add(mHeader = new BitmapField(mBmpHeader)); } private void addCover() { mMainManager.add(mCoverManager = new HorizontalFieldManager()); mCoverManager.add(mCover = new BitmapField(mBmpCover)); } private void addTitle() { mMainManager.add(mTitleManager = new HorizontalFieldManager()); mTitleManager.add(mTitle = new BitmapField(mBmpTitle)); } private void addTimeline() { mMainManager.add(mTimelineManager = new HorizontalFieldManager()); mTimelineManager.add(mTimeline = new BitmapField(mBmpTimeline)); } private void addToolbar() { mMainManager.add(mToolbarManager = new HorizontalFieldManager()); mToolbarManager.add(mLeftside = new BitmapField(mBmpLeftside)); mToolbarManager.add(mBtnPrev = new BitmapButtonField(mBmpPrevNrm, mBmpPrevFcs, mBmpPrevFcs)); mToolbarManager.add(mBtnPlay = new BitmapButtonField(mBmpPlayNrm, mBmpPlayFcs, mBmpPlayFcs)); mBtnPlay.setChangeListener(this); mBtnPause = new BitmapButtonField(mBmpPauseNrm, mBmpPauseFcs, mBmpPauseFcs); mBtnPause.setChangeListener(this); mToolbarManager.add(mBtnStop = new BitmapButtonField(mBmpStopNrm, mBmpStopFcs, mBmpStopFcs)); mToolbarManager.add(mBtnNext = new BitmapButtonField(mBmpNextNrm, mBmpNextFcs, mBmpNextFcs)); mToolbarManager.add(mRightside = new BitmapField(mBmpRightside)); } public void fieldChanged(Field field, int context) { if (mBtnPlay == field) play(); else if (mBtnPause == field) pause(); } private void pause() { mToolbarManager.replace(mBtnPause, mBtnPlay); } private void play() { mToolbarManager.replace(mBtnPlay, mBtnPause); } } 

К сожалению, ресурсы не очень хорошие. Лучшим источником информации, как правило, является ссылка Google на блоги с конкретной темой, которую вы ищете.

Если вы только начинаете писать BB GUI-код, я бы очень рекомендовал познакомиться с classами Manager и Field, так как вам, вероятно, придется написать много пользовательских расширений.

  • Применение MVC с помощью JavaFx
  • JavaFx tableview sort действительно медленный, как улучшить скорость сортировки, как в java swing
  • Добавление JPanels от других classов к cardLayout
  • как изменить пользовательский интерфейс в зависимости от выбора поля со списком
  • Почему мы должны использовать sp для размеров шрифтов в Android?
  • SwingWorker, Thread.sleep () или javax.swing.timer? Мне нужно «вставить паузу»,
  • Как стиль PopupMenu?
  • Как я могу проверить, видимо ли это вид или нет в Android?
  • Несколько streamов пользовательского интерфейса - Winforms
  • Поворотная квадратная панель в Java GUI
  • Лучший способ переключения между UISplitViewController и другими controllerами представлений?
  • Interesting Posts

    Аккордеонная ячейка таблицы – Как динамически расширять / сокращать uitableviewcell?

    Достижение скорости на современной конструкции ПК

    Почему java.util.Optional не является Serializable, как сериализовать объект с такими полями

    Извлеките информацию внутри всех скобок в R

    Умножьте 2 числа, а затем суммируйте

    Исключение из памяти из-за большого размера растрового изображения

    Как вы можете искать программный API Google API

    Функциональность или дополнение Firefox «забыть сайт»

    конвертировать индекс в рамку данных pandas

    Как узнать, совместим ли ЖК-дисплей с ноутбуком?

    Почему логический 1 байт, а не 1 бит размера?

    Поддерживает ли Windows 7 UTC как время BIOS?

    АБР не отвечает. Вы можете подождать больше или убить процесс «adb.exe» вручную и нажать «Перезапустить»,

    Почему C # XmlDocument.LoadXml (строка) терпит неудачу при включении заголовка XML?

    Половина установленной оперативной памяти – это аппаратное обеспечение

    Давайте будем гением компьютера.