Blackberry - как создать раскладку наподобие выдвижного ящика Android - PullRequest
3 голосов
/ 02 сентября 2011

Кто-нибудь знает, как создать компонент макета в Blackberry, который ведет себя как выдвижной ящик Android?

ТНХ.

Ответы [ 3 ]

0 голосов
/ 03 сентября 2011

эй, это действительно блестящая идея иметь такие раскладки для ежевики. это довольно сложно сделать это. мы должны играть с пользовательскими макетами. Первое, что требуется, это знание настройки менеджеров. Я считаю, что мы также можем использовать всплывающее окно, чтобы сдвинуть его вверх. менеджер поверх всплывающего экрана. во-вторых, API Gusture для боковой прокрутки. Всего наилучшего, приятель.

0 голосов
/ 23 мая 2012

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

package mypackage;

import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.TouchEvent;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.LabelField;

public class SlidingDrawer extends Manager {
    final static int STATE_VIEW = 1;
    final static int STATE_HIDE = STATE_VIEW+1;
    final static int STATE_SLIDE_DOWN = STATE_HIDE+1;
    final static int STATE_SLIDE_UP = STATE_SLIDE_DOWN+1;
    final static int MAX_NO_OF_STATES = STATE_SLIDE_UP+1;
    static int CURRENT_STATE = STATE_VIEW;
    int i = 0;
    LabelField _lbl_hero;

    public SlidingDrawer(long arg0) {
    super(arg0);
        // TODO Auto-generated constructor stub
        init();
    }

    private void init()
    {
        _lbl_hero = new LabelField("Hero testing Every thign....");
        this.add(_lbl_hero);
    }

    protected void paint(Graphics graphics) {
        // TODO Auto-generated method stub
        switch(CURRENT_STATE)
        {
            case STATE_VIEW:
                super.paint(graphics);
                break;
            case STATE_HIDE:

                break;
            case STATE_SLIDE_DOWN:
                super.paint(graphics);
                if(i<this.getHeight())
                {
                    this.getField(0).setPadding(i++, 0, 0, 0);
                    invalidate();
                }
                else
                {
                    CURRENT_STATE = STATE_HIDE;
                }
                break;
            case STATE_SLIDE_UP:
                super.paint(graphics);
                if( i > 0 )
                {
                    this.getField(0).setPadding(i--, 0, 0, 0);
                    invalidate();
                }
                else
                {
                    CURRENT_STATE = STATE_VIEW;
                }
                break;
        }
    }
    public void setState(int state)
    {
        if(state < MAX_NO_OF_STATES)
        {
            CURRENT_STATE = state;
        }
        else
            Dialog.alert("Invalid State....");
    }
    protected boolean touchEvent(TouchEvent message) {
        // TODO Auto-generated method stub
        if(CURRENT_STATE == STATE_VIEW)
        {
            i=0;
            CURRENT_STATE = STATE_SLIDE_DOWN;
            invalidate();
        }
        else if(CURRENT_STATE == STATE_HIDE)
        {
//          i = this.getField(0).getContentRect().y;
            CURRENT_STATE = STATE_SLIDE_UP;
            invalidate();
        }
        return super.touchEvent(message);
    }
    protected void sublayout(int maxWidth, int maxHeight) {
        // TODO Auto-generated method stub
        setExtent(360, 100);//Width and Height of the Childs
    }
}

Пожалуйста, измените этот код в соответствии с вашими требованиями и используйте его.

0 голосов
/ 03 сентября 2011

На самом деле не сделал этого. Но я думаю, что самая большая трудность здесь - это анимация скольжения и видимость ИМХО. Сначала вы должны поработать над анимацией для эффекта скольжения. Тогда на самом менеджере.

Сенсорные устройства сопряжены с еще одной трудностью ... Вы должны запрограммировать событие касания ползунка так, чтобы оно соответствовало жесту.

...