Layout Blackberry-如何创建类似滑动抽屉android的布局

Layout Blackberry-如何创建类似滑动抽屉android的布局,layout,blackberry,user-interface,Layout,Blackberry,User Interface,有人知道如何在blackberry中创建类似android滑动抽屉的布局组件吗 thx.实际上还没有做到。但我认为这里最大的困难是滑动动画部分和可见性IMHO。您应该首先处理滑动效果的动画。然后是经理本人 触摸设备带来了另一个困难。。。您必须对滑块触摸事件进行编程,使其跟随手势。嘿,为blackberry设置这样的布局真是个好主意。完成这件事很有挑战性。我们必须使用自定义布局。 首先需要的是管理者的定制知识。我相信我们也可以使用弹出式屏幕将其向上滑动。管理器位于弹出屏幕的顶部。 第二,用于侧滚的

有人知道如何在blackberry中创建类似android滑动抽屉的布局组件吗


thx.

实际上还没有做到。但我认为这里最大的困难是滑动动画部分和可见性IMHO。您应该首先处理滑动效果的动画。然后是经理本人


触摸设备带来了另一个困难。。。您必须对滑块触摸事件进行编程,使其跟随手势。

嘿,为blackberry设置这样的布局真是个好主意。完成这件事很有挑战性。我们必须使用自定义布局。 首先需要的是管理者的定制知识。我相信我们也可以使用弹出式屏幕将其向上滑动。管理器位于弹出屏幕的顶部。 第二,用于侧滚的Gusture api。
所有最好的朋友。

请检查下面的源代码,我在其中创建了一个manager类。只需将您想要的幻灯片添加到该管理器并使用它即可。根据您的要求进行更改

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
    }
}
package-mypackage;
导入net.rim.device.api.ui.Graphics;
导入net.rim.device.api.ui.Manager;
导入net.rim.device.api.ui.TouchEvent;
导入net.rim.device.api.ui.component.Dialog;
导入net.rim.device.api.ui.component.LabelField;
公共类滑动抽屉扩展管理器{
最终静态int状态_视图=1;
最终静态整型状态\隐藏=状态\视图+1;
最终静态整数状态\u滑动\u向下=状态\u隐藏+1;
最终静态整数状态\u滑动\u向上=状态\u滑动\u向下+1;
最终静态整数最大状态数=状态向上滑动+1;
静态int当前状态=状态视图;
int i=0;
拉伯菲尔德"英雄",;
公共滑动抽屉(长arg0){
超级(arg0);
//TODO自动生成的构造函数存根
init();
}
私有void init()
{
_lbl_hero=新LabelField(“测试每件事物的英雄”);
添加(\u lbl\u hero);
}
受保护的空心漆(图形){
//TODO自动生成的方法存根
开关(当前状态)
{
案例状态视图:
超级油漆(图形);
打破
案例状态隐藏:
打破
案例状态\u向下滑动\u:
超级油漆(图形);
如果(i 0)
{
this.getField(0).setPadding(i--,0,0,0);
使无效();
}
其他的
{
当前状态=状态视图;
}
打破
}
}
公共无效设置状态(int状态)
{
如果(状态<状态的最大值)
{
当前状态=状态;
}
其他的
Dialog.alert(“无效状态…”);
}
受保护的布尔touchEvent(touchEvent消息){
//TODO自动生成的方法存根
如果(当前状态==状态视图)
{
i=0;
当前状态=状态滑下;
使无效();
}
else if(当前状态==状态隐藏)
{
//i=this.getField(0.getContentRect().y;
当前状态=状态向上滑动;
使无效();
}
返回super.touchEvent(消息);
}
受保护的空位子布局(int-maxWidth、int-maxHeight){
//TODO自动生成的方法存根
setExtent(360100);//孩子的宽度和高度
}
}

请根据您的要求更改此代码并使用它