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

По моему опыту, мы использовали объекты EF на бизнес-слое нашего приложения, но когда мы превратим переход на уровень представления через наш уровень служб WCF, мы создадим объекты представления из объектов EF.

В нашем случае, только представление передается уровню представления. Мы делаем это, чтобы управлять, как данные представлены, и примените защитную проверку для данных, входящих от уровня представления.

В случае ueing EF возражает в транзакции WCF, Вы потеряете контекст объекта, что объект EF был связан. Существуют некоторые усилия в CodePlex, которые пытаются помочь с этим, но я havn't не отставал от их усилий.

20
задан Maksym Gontar 25 March 2010 в 09:22
поделиться

3 ответа

В Blackberry нет скинов, я знаю два способа добиться эффекта скина:

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

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

удалить мертвые изображения Imageshack ссылка - BlackBerry Theme Builder

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

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

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

Вы можете использовать бесплатные шаблоны Visio для прототипирования пользовательского интерфейса BlackBerry - v1.0 от ArtfulBits.

удалена мертвая ссылка на Imagehack
удалена мертвая ссылка на Imageshack

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

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

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

Все это для состояний

  • отключено
  • нормально
  • сфокусировано
  • активно (нажата )

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

Основы

devsushi.com: Blackberry JDE API - Справочник по полю пользовательского интерфейса в основном дает представление о существующих элементах управления пользовательским интерфейсом Blackberry с кодами и снимками экрана.

ИТО: добавление элементов в ListField (BlackBerry)
ИТО: встроенный элемент управления HTML для Blackberry?
ИТО: Blackberry - как получить значение datetime из DateField?
ИТО: стилизация приложения BlackBerry для внешнего вида Подобно iPhone

Диспетчеры, макет

Даже при использовании стандартных элементов управления нам нужно расположить и сгруппировать так, как мы хотим, поэтому нам нужны настраиваемые менеджеры:
Thinking BlackBerry: BlackBerry UI - Создание базового полевого менеджера
Thinking BlackBerry: простой менеджер BlackBerry Grid Layout
Thinking BlackBerry: создание настраиваемого экрана, вертикальная прокрутка и многое другое
SO: Проблема прокрутки в приложении Blackberry
SO: BlackBerry - отображение текста Unicode

69
ответ дан 29 November 2019 в 22:34
поделиться

Пример стандартной оболочки мультимедийного приложения на Bold 9000

удалена неработающая ссылка на ImageShack - нарезана мультимедийная программа

удалена неработающая ссылка на 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);
    }
}
  • поместите HorizontalFieldManager в VerticalFieldManager и наоборот
  • используйте разные изображения для нормального, сфокусированного и активного состояний
  • если вам нужны кнопки нестандартной формы, вы можете нарисовать их в переопределении метода 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);
    }
}
5
ответ дан 29 November 2019 в 22:34
поделиться

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

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

4
ответ дан 29 November 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: