【问题标题】:Blackberry - how to create a layout like sliding drawer android黑莓 - 如何创建类似滑动抽屉android的布局
【发布时间】:2011-11-09 03:30:06
【问题描述】:

有谁知道如何在黑莓中创建类似于 android 滑动抽屉的布局组件?

谢谢。

【问题讨论】:

    标签: layout blackberry user-interface


    【解决方案1】:

    还没有真正做到。但我认为这里最大的困难是滑动动画部分和可见性恕我直言。您应该首先处理滑动效果的动画。然后是 Manager 本身。

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

    【讨论】:

      【解决方案2】:

      嘿,为黑莓提供这样的布局真是一个绝妙的主意。完成它非常具有挑战性。我们必须使用自定义布局。 首先需要的是管理人员定制的知识。我相信我们也可以使用弹出屏幕将其向上滑动。弹出屏幕顶部的管理器。 其次,用于侧滚动的 Gusture api。 所有最好的伙伴。

      【讨论】:

        【解决方案3】:

        请检查以下我创建管理器类的源代码。只需将您想要滑动的任何内容添加到该管理器并使用它。根据您的要求更改。

        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
            }
        }
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-31
          • 1970-01-01
          • 2011-06-30
          • 1970-01-01
          相关资源
          最近更新 更多